最近我在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
...
我在其他论坛上找不到这个问题的解决方案,所以如果你知道答案,我将感谢你的帮助:-(
编辑:发布这个问题是因为我对发电机的工作方式缺乏了解。我确信,一旦我在发电机上完成一个循环,我就可以随心所欲地做另一个循环。我对这个问题深表歉意。
您应该使用列表理解而不是生成器,将括号替换为方括号,如
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)