我正在学习 python3 列表理解。我了解如何格式化列表理解:[方程式、for 循环、if 过滤语句],但我无法弄清楚如何将三行代码压缩为“方程式”部分的单个方程式。
我取一个数字并将其与自身相加,然后取结果并将其与自身相加等等,以在列表中创建一个数字序列。
我可以通过声明 x = 1 然后循环以下内容来完成此操作:
y = x + x
x = y
谁能帮我把它变成一个单线方程,如果可能的话,我可能会研究的资源可以帮助我将来解决这个问题?
最佳答案
你的算法等同于乘以 2 的幂:
x = 3
res = [x * 2**i for i in range(10)]
# [3, 6, 12, 24, 48, 96, 192, 384, 768, 1536]
要了解为什么会这样,请注意您在 for
循环的每次迭代中将起始数字乘以 2:
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 提到的,您不能在进行过程中引用列表理解的元素,因为在理解完成之前它们不可用。
关于Python 列表理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52541850/