Python列表理解

Python List Comprehensions

我正在学习python3列表理解。 我理解如何格式化列表理解:[equation,for loop,if if statement for filtering],但我无法弄清楚如何将三行代码压缩成'equation'部分的单个等式。

我正在取一个数字并将其添加到自身,然后将结果添加到自身,依此类推,在列表中创建一系列数字。

我可以通过声明x = 1然后循环以下来完成此操作:

y = x + x

x = y

任何人都可以帮我把它变成一个单行方程式,如果可能的话,我可能会研究哪些资源来帮助我解决这个问题?


您的算法相当于乘以2的幂:

1
2
3
4
x = 3
res = [x * 2**i for i in range(10)]

# [3, 6, 12, 24, 48, 96, 192, 384, 768, 1536]

要了解为什么会出现这种情况,请注意您在for循环的每次迭代中将起始数乘以2:

1
2
3
4
5
6
7
8
9
10
x = 3
res = [x]
for _ in range(9):
    y = x + x
    x = y
    res.append(y)

print(res)

# [3, 6, 12, 24, 48, 96, 192, 384, 768, 1536]

正如@timgeb所提到的,你不能在你进行时引用列表理解的元素,因为在理解完成之前它们是不可用的。