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

itertools.islice在python3中不推进迭代器,python,python-3.x,Python,Python 3.x,但是第二个for循环的预期结果应该是: 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循环的预期结果应该是:

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

为什么枚举(seq)在第一个循环之后没有被提升?

您每次都通过调用
enumerate
重新创建生成器

如果在同一个生成器上工作,它将按预期进行

#(8, 'i')    

每次通过调用
enumerate
重新创建生成器

如果在同一个生成器上工作,它将按预期进行

#(8, 'i')    

您的两个示例都在itertools.islice(enumerate(a),2,5)中为i提供了
-您可以使用您运行的代码吗?您在哪里定义
a
?为什么希望两个相同的代码片段产生不同的结果?您的两个示例都在itertools.islice(enumerate(a),2,5)中为i提供了
-请您使用运行的代码。您在哪里定义
a
?为什么希望两个相同的代码片段产生不同的结果?