У меня есть основной c вопрос относительно того, что a for l oop делает со списком в Python. Я видел несколько связанных вопросов на веб-сайте, но почему-то эти примеры слишком сложны, и я все еще не могу решить свою проблему.
Рассмотрим следующий код.
l=[1, 2, 3, 4, 5, 6, 7, 8]
for i in range(4):
t=l
print(t)
print(l)
del t[0]
Я ожидал, что на каждой итерации первый элемент списка t
удаляется, а список l
не изменяется и должен оставаться [1, 2, 3, 4, 5, 6, 7, 8]
. Однако на выходе получается
[1, 2, 3, 4, 5, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8]
[2, 3, 4, 5, 6, 7, 8]
[2, 3, 4, 5, 6, 7, 8]
[3, 4, 5, 6, 7, 8]
[3, 4, 5, 6, 7, 8]
То есть не только первый элемент t
, но и первый элемент l
удаляется на каждой итерации, как если бы l
заблокирован для быть t
, а не какой-то внешней переменной для l oop.
Почему это так? И как я могу изменить код так, чтобы был удален только первый элемент t
, а l
оставался неизменным во всем?