最近我在 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
...
我无法在其他论坛上找到此问题的解决方案,因此如果您知道答案,我将不胜感激 :-)
编辑:发布这个问题是因为我对生成器的工作原理缺乏了解。我确信,一旦我完成了一个生成器的循环,我就可以根据需要多次执行另一个循环。对于这个问题,我深感抱歉。
答案 0 :(得分:0)
你应该使用列表推导而不是生成器,用方括号替换括号,比如
with open('test.txt') as file:
lines = [line for line in file.read().splitlines()] # parenthesis replaced with square brackets
for line in lines:
print(line)
for line in lines:
print(line)