gpt4 book ai didi

Python 列表理解、解包和多重操作

转载 作者:太空狗 更新时间:2023-10-29 17:37:05 26 4
gpt4 key购买 nike

我想通过执行以下操作来解压缩我创建的元组,因此结果只是一个简单的列表。我可以在 2-3 行中获得所需的结果,但肯定有一个 oneliner list.comp?

x = range(10)
y = [(i,j**2) for i,j in zip(x,x)]
>>>y
[(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25), (6, 36), (7, 49), (8, 64), (9
, 81)]
>>>

我想要的是result = [0,0,1,1,2,4,3,9.....]

y = len(x)*[0]
y[::2] = x
y[1::2] = [i**2 for i in x]

给出我想要的,但如果我需要更一般的情况怎么办:

y = [(i, sqrt(i), i**3, some_operation_on_i, f(i), g(i)) for i in x]

例如,我应该能够得到类似结果的直接列表,其中我只指定一个操作(方形)跟随每个 i,但现在每个 i 后面有任意数量的操作。

最佳答案

使用嵌套列表理解:

result = [a for tup in y for a in tup]

例子:

>>> x = range(10)
>>> y = [(i,j**2) for i,j in zip(x,x)]
>>> [a for tup in y for a in tup]
[0, 0, 1, 1, 2, 4, 3, 9, 4, 16, 5, 25, 6, 36, 7, 49, 8, 64, 9, 81]

这也适用于更一般的情况,或者您可以一步完成:

y = [a for i in x for a in (i, sqrt(i), i**3, some_operation_on_i, f(i), g(i))]

如果嵌套的列表推导式看起来很奇怪,这是一个普通的 for 循环的样子:

y = []
for i in x:
for a in (i, sqrt(i), i**3, some_operation_on_i, f(i), g(i)):
y.append(a)

关于Python 列表理解、解包和多重操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13958998/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com