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] |
要了解为什么会出现这种情况,请注意您在
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所提到的,你不能在你进行时引用列表理解的元素,因为在理解完成之前它们是不可用的。