Một chút nền tảng về lý do tại sao vòng lặp trong câu hỏi không hoạt động như mong đợi.
Một vòng lặp
for i in iterable:
# some code with i
là cơ bản một viết tắt cho
iterator = iter(iterable)
while True:
try:
i = next(iterator)
except StopIteration:
break
# some code with i
Vì vậy, các for
loop chiết xuất giá trị từ một iterator xây dựng từ một iterable bởi một và tự động nhận ra khi iterator đó là kiệt sức và dừng lại.
Như bạn có thể thấy, trong mỗi lần lặp của vòng lặp while
tôi được bố trí, do đó giá trị của i
sẽ được ghi đè bất kể reassignments khác bạn phát hành ở phần # some code with i
. Vì lý do này, for
vòng trong Python không phù hợp cho các thay đổi vĩnh viễn đối với biến vòng lặp và bạn nên sử dụng vòng lặp while
thay thế, như đã được minh chứng trong câu trả lời của Volatility.
Sử dụng vòng lặp 'while' và thay vì' is' sử dụng '=='. –
Tại sao bạn muốn thay đổi chỉ mục lặp lại? Đây chắc chắn là một mùi. –
Tôi đang viết một cái gì đó giống như một thông dịch viên lắp ráp mã. Vì vậy, tôi phải chuyển sang một số hướng dẫn nhất định do việc triển khai của tôi. – drum