考慮してください:
>>> 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
この場合に反復子を進めないように見えるのでしょうか?