Надеюсь, что кто-то может помочь мне здесь.
Я очень новичок в Python, и я пытаюсь понять, что я делаю неправильно.
Я уже искал и выяснил, что переменные Python могут быть связаны так, что изменение одного изменяет другое, и я провел многочисленные тесты с помощью функции id()
, чтобы справиться с этой концепцией. Но я, похоже, нашел исключение, я надеюсь, кто-то может объяснить...
во-первых, следующее работает, как ожидается, сделать независимую копию списка.
>>> a = [0,0]
>>> b = a[:]
>>> print a is b
False
>>> b[0]=1
>>> print a
[0,0]
>>> print b
[1,0]
Но если я немного изменил это так, чтобы a
был списком в списке, он меняет...
>>> a = [[0,0],[0,0]]
>>> b = a[:]
>>> print a is b
False
>>> b[0][0]=1
>>> print a
[[1, 0], [0, 0]]
>>> print b
[[1, 0], [0, 0]]
Теперь мы видим, что любое обновление b
также относится к a
, но результат print a is b
возвращает False
? Я также проверял это на id()
, все говорит, что они независимы друг от друга, но когда я обновляю одно, это относится и к другому.
Может ли кто-нибудь объяснить это?
Отмечая, что я запускаю их из http://labs.codecademy.com/#:workspace, поэтому моя первая мысль заключается в том, что это просто ошибка на их сайте, но я не знаю Не знаете?
EDIT:
СПАСИБО ВСЕМ за отличные ответы. Это было быстро! Я знаю, что это, вероятно, было задано раньше, но было трудно найти.
Поскольку все ответы верны, я буду ждать за день до маркировки. кто имеет наибольшее +1, получит отметку:)