Я знаю, что я не должен изменять список внутри цикла, но просто из любопытства, я хотел бы знать, почему количество итераций отличается от двух следующих примеров.
Пример 1:
x = [1, 2, 3, 4, 5]
for i, s in enumerate(x):
del x[0]
print(i, s, x)
Пример 2:
x = [1,2,3,4,5]
for i, s in enumerate(x):
x = [1]
print(i, s, x)
Пример 1 выполняется только 3 раза, потому что когда i==3
, len(x)==2
.
Пример 2 выполняется 5 раз, хотя len(x)==1
.
Итак, мой вопрос: enumerate
генерирует полный список пар (index, value)
в начале цикла и перебирает его? Или они генерируются на каждой итерации цикла?