【发布时间】:2021-08-28 07:15:12
【问题描述】:
最近我在 python 的理解生成器中遇到了一些奇怪的行为
我的代码:
with open('test.txt') as file:
lines = (line for line in file.read().splitlines())
for line in lines:
print(line)
for line in lines:
print(line)
但是,我只得到一个,而不是对同一文件内容进行两次迭代:
row1
row2
row3
...
我期望的地方:
row1
row2
row3
...
row1
row2
row3
...
我在其他论坛上找不到此问题的解决方案,所以如果您知道答案,我将不胜感激:-)
编辑:这个问题是由于我对生成器的工作原理缺乏了解而发布的。我确信,一旦我完成了一个生成器的循环,我就可以根据需要再做一个又一个。对于这个问题,我深表歉意。
【问题讨论】:
-
这是因为您使用了一次生成器,而第二个循环没有任何用处。以这种方式使用生成器根本没有任何好处,因为无论如何你都会读取内存中的整个文件内容。
-
所有正确的答案都是对原始问题的回答,但现在我很好奇是否有办法以任何方式在同一个生成器上循环两次,或者这是不可能的
标签: python list-comprehension generator