Это код:
r = [1,2,3,4,5,6,7,8,9] for x in r: print(r) r.pop(1)
Когда я print(r), почему печать / l oop останавливается после 5 итераций, а не go весь путь?
print(r)
Поскольку вы используете r.pop(1), который удаляет в каждой итерации элемент с индексом 1 списка r, поэтому вы достигаете конца списка на 5-й итерации.
r.pop(1)
r
Обратите внимание, что в Python Блок с отступом в al oop содержит все команды, которые будут выполнены в этом l oop.
Инструкция r.pop(1) удаляет элемент массива по индексу 1. Поскольку массив имеет 9 элементов, и только потому, что вы печатаете его перед повторным удалением, вы видите 5 итераций.
Подробно:
x
[1,2,3,4,5,6,7,8,9]
2
[1,3,4,5,6,7,8,9]
3
[1,4,5,6,7,8,9]
4
[1,5,6,7,8,9]
6
[1,6,7,8,9]
5
Обратите внимание, как изменяется массив внутри l oop вызвал неожиданную последовательность элементов.
Вы не должны изменять длину списка в l oop, это приведет к ошибкам. Если вы хотите распечатать все элементы списка, пока список не станет пустым, используйте вместо этого следующий код:
r = [1, 2, 3, 4, 5, 6, 7, 8, 9] while r: print(r) r.pop()