Considérer:
>>> lst = iter([1,2,3])
>>> next(lst)
1
>>> next(lst)
2
Donc, avance l'itérateur est, comme prévu, géré par la mutation de ce même objet.
Ceci étant le cas, je l'espère:
a = iter(list(range(10)))
for i in a:
print(i)
next(a)
pour passer chaque deuxième élément: l'appel à l' next
devrait avance l'itérateur une fois, puis l'appel implicite faite par la boucle avance une deuxième fois, et le résultat de ce deuxième appel sera affecté à la i
.
Il n'a pas. La boucle imprime tous les éléments dans la liste, sans en sauter aucune.
Ma première pensée a été que cela peut se produire parce que la boucle appels iter
sur ce qui s'est passé, et cela pourrait donner un indépendant itérateur - ce n'est pas le cas, comme nous l'avons iter(a) is a
.
Alors, pourquoi est - next
apparaît pas à l'avance l'itérateur dans ce cas?