【发布时间】:2018-11-01 01:49:24
【问题描述】:
在这段代码中:
x = [0]
for i in range(10):
x = (a+i for a in x)
print(list(x)) # [90]
我正在链接生成器,以便一次迭代中的 x 使用前一个 x 的结果。但似乎所有的 x 生成器在最后一次迭代 (9) 中都使用了 i 的值。
如何使每个生成器在创建它们的迭代中使用 i 的值? (这样最终的结果就是 0 + 1 + 2 + 3 + 4 +...)
【问题讨论】:
-
就是这样,谢谢@IljaEverilä。
-
这是一个“为什么会这样”或“我该如何解决这个问题”的问题?因为在后一种情况下,我真的不明白为什么您首先要使用生成器,而不是在循环中使用列表推导,或者例如将循环反转为
x = (a+sum(range(10)) for a in x)。 -
这是一个简化的例子。在我的实际代码中,将其转换为列表理解/反转循环很难,我需要迭代器的行为,因为数据可能不适合内存。无论如何,副本上的答案解决了我的问题。