Xem xét:
>>> lst = iter([1,2,3])
>>> next(lst)
1
>>> next(lst)
2
Vì vậy, tiến bộ iterator, như mong đợi, được xử lý bằng cách biến đổi cùng một đối tượng.
Đây là trường hợp, tôi mong đợi:
a = iter(list(range(10)))
for i in a:
print(i)
next(a)
để bỏ qua mọi phần tử thứ hai: lệnh gọi next
sẽ tiến lên trình lặp một lần, sau đó cuộc gọi ngầm được thực hiện bởi vòng lặp sẽ chuyển tiếp lần thứ hai - và kết quả của cuộc gọi thứ hai này sẽ được gán cho i
.
Nó không. Vòng lặp in tất cả các mục trong danh sách, mà không bỏ qua bất kỳ mục nào.
Suy nghĩ đầu tiên của tôi là điều này có thể xảy ra bởi vì vòng lặp gọi iter
những gì nó được thông qua và điều này có thể mang lại một trình vòng lặp độc lập - đây không phải là trường hợp như chúng ta có iter(a) is a
.
Vì vậy, tại sao next
không xuất hiện để thúc đẩy iterator trong trường hợp này?