Я понимаю, что из-за того, как работает Python x = []; y = x; x.append(1); y
будет печатать [1]
. Однако, наоборот, скажем,Как я могу присвоить значение в python
z = [1,2]
temp = z
temp[1] = 3
z,temp
напечатает ([1,3],[1,3])
. Если я правильно понял, то и z
, и temp
указывают на один и тот же список, поэтому изменение одного изменит другое, видя, что списки изменяемы. Как я могу предотвратить это? А именно, я хочу сделать цикл for, который скопирует z
в temp
, изменит его по-разному и вытолкнет его в очередь. Для этого необходимо, чтобы z
содержал базовый массив, поэтому мне нужно, чтобы смена temp
не изменилась. z
.
EDIT: Я попытался сменить z на кортеж так, чтобы z=z,
, а затем позвонил z[0]
вместо z
. Тем не менее это не решает мою проблему.
Технически, Python - это только пропускная способность - разница, которую вы видите, больше между изменяемыми и неизменяемыми типами. Что касается вашего вопроса: вы можете создать копию списка, например. 'newlist = oldlist [:]'. – miku
Возможный дубликат [Создание переменных Python, которые не зависят друг от друга] (http://stackoverflow.com/questions/16362617/creating-python-variables-that-are-independent-of-each-other) – geoffspear
@miku Нет , изменчивость не имеет ничего общего с назначением, просто создавая другую ссылку. После 'a = b',' a is b' всегда * true, независимо от того, какие типы задействованы. Единственное, что влияет на изменчивость, - это то, как легко наткнуться на этот факт. – delnan