seq = 'abcdefghijklmn'
for i in itertools.islice(enumerate(seq), 2, 5):
print(i)
#(2, 'c')
#(3, 'd')
#(4, 'e')
for i in itertools.islice(enumerate(seq), 3, 4):
print(i)
#(3, 'd')
但是第二个for循环的预期结果应该是:
#(8, 'i')
为什么第一次循环后枚举(seq)没有进展?
答案 0 :(得分:3)
您每次都可以通过调用enumerate
重新创建生成器。
如果您使用相同的生成器,它会按预期进行。
>>> import itertools
>>> seq = "abcdefghijklmnop"
>>> gen = enumerate(seq)
>>> list(itertools.islice(gen, 3))
[(0, 'a'), (1, 'b'), (2, 'c')]
>>> list(itertools.islice(gen, 3))
[(3, 'd'), (4, 'e'), (5, 'f')]
>>> list(itertools.islice(gen, 3))
[(6, 'g'), (7, 'h'), (8, 'i')]
>>> _