Mempertimbangkan:
>>> lst = iter([1,2,3])
>>> next(lst)
1
>>> next(lst)
2
Jadi, memajukan iterator, seperti yang diharapkan, ditangani dengan memutasi objek yang sama.
Karena itu, saya berharap:
a = iter(list(range(10)))
for i in a:
print(i)
next(a)
untuk melewati setiap elemen kedua: panggilan ke nextharus memajukan iterator sekali, maka panggilan implisit yang dibuat oleh loop harus memajukannya untuk kedua kalinya - dan hasil panggilan kedua ini akan ditugaskan untuk i.
Tidak. Lingkaran mencetak semua item dalam daftar, tanpa melewatkan apapun.
Pikiran pertama saya adalah bahwa ini mungkin terjadi karena loop memanggil iterapa yang dilewati, dan ini mungkin memberikan iterator independen - ini bukan masalahnya, seperti yang kita miliki iter(a) is a.
Jadi, mengapa nexttidak muncul untuk memajukan iterator dalam kasus ini?