如何压缩具有无限范围的迭代器?

时间:2017-03-30 23:53:47

标签: python python-3.x iterator range

我希望在遍历迭代器时跟踪索引。在Haskell中,我可以使用无限的整数列表[1..]来压缩迭代器。但是,我不知道Python中的这类功能。构造迭代器的最简单方法是什么,如下所示?

for (case,i) in zip(data, magic_infinite_list):
    print('Case #{}: {}'.format(i,case))

(我知道我可以创建变量i并手动递增它,这不是重点 - 我想知道是否可以使用迭代器来实现这一点)

2 个答案:

答案 0 :(得分:3)

您应该使用enumerate。请注意,此处i基于0:

for (i, case) in enumerate(data):
    print('Case #{}: {}'.format(i + 1, case))

答案 1 :(得分:2)

已经给出了{p> enumerate(),这就是大多数人会使用的。但是如果你真的想从1开始,并获得整数秒,itertools.count()会生成一个懒惰的无限整数序列:

import itertools
for case, i in zip(data, itertools.count(1)):
    ...