繁体   English   中英

itertools.islice不会在python3中推进迭代器

[英]itertools.islice does not advance iterator in python3

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)?

您每次都可以通过调用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')]
>>> _

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM