考慮してください:
>>> lst = iter([1,2,3])
>>> next(lst)
1
>>> next(lst)
2
したがって、イテレータの前進は、予想通り、同じオブジェクトを変更することによって処理されます。
これが事実であると私は期待します:
a = iter(list(range(10)))
for i in a:
print(i)
next(a)
毎秒の要素をスキップするにnextは:への呼び出しでイテレータを1回進める必要があります。次に、ループによって行われる暗黙の呼び出しでもう一度繰り返す必要があり、この2番目の呼び出しの結果がに割り当てられiます。
そうではありません。ループは、リスト内のすべての項目をスキップせずに印刷します。
私が最初に思ったのは、ループiterは渡されたものを呼び出すために発生する可能性があり、独立したイテレータを提供する可能性があるということでした。これはそうではありませんiter(a) is a。
では、なぜnextこの場合に反復子を進めないように見えるのでしょうか?