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 next
harus 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 iter
apa yang dilewati, dan ini mungkin memberikan iterator independen - ini bukan masalahnya, seperti yang kita miliki iter(a) is a
.
Jadi, mengapa next
tidak muncul untuk memajukan iterator dalam kasus ini?