พิจารณา:
>>> 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
ควรล่วงหน้า iterator ครั้งเดียวแล้วโทรนัยทำโดยวงควรล่วงหน้าเป็นครั้งที่สอง - i
และผลของการโทรที่สองนี้จะได้รับการมอบหมายให้
มันไม่ได้ ลูปจะพิมพ์รายการทั้งหมดในรายการโดยไม่ข้ามอะไรเลย
ความคิดแรกของฉันคือว่าเรื่องนี้อาจจะเกิดขึ้นเพราะห่วงเรียกร้องiter
ในสิ่งที่มันจะผ่านไปและอาจให้ iterator อิสระ - iter(a) is a
นี้ไม่ได้เป็นกรณีที่เรามี
ดังนั้นทำไมnext
ไม่ปรากฏตัวเลื่อนซ้ำในกรณีนี้?