>>> gen = iter(['a','b','c','d'])
>>> for i, line in enumerate(gen):
... print str(i) + ', ' + line
... if (i == 1):
... print 'saw 1'
... print 'next: ' + gen.next()
...
0, a
1, b
saw 1
next: c
2, d
如您所见,我更愿意将3, d其理解为(如果愿意,我想保留一个不变式:因为还有其他原因enumerate?)是i对应于的索引line。在next()接管了转储。
遗憾的是,此尝试失败,i因为设置为for循环认为应该是:
>>> gen = iter(['a','b','c','d'])
>>> for i, line in enumerate(gen):
... print str(i) + ', ' + line
... if (i == 1):
... print 'saw 1'
... print 'next: ' + gen.next()
... i = i + 1
...
0, a
1, b
saw 1
next: c
2, d
答案是什么?沟enumerate手动跟踪索引?我希望有一些高级程序可以适应这种控制流程。
我正在解析一个文件,偶尔需要读取下一行的内容(如果存在)(因此调用next()生成器),但是因此我不得不处理循环控制流。
因为我已经知道该怎么做,所以将不接受通过首先读出并完全评估生成器来做到这一点的答案(但请随时发布这样的答案,我会投票赞成)。
慕尼黑的夜晚无繁华
相关分类