I understand that, due to the way Python works x = []; y = x; x.append(1); y
will print [1]
. However, the reverse, say,
z = [1,2]
temp
Copying a list is easy ... Just slice it:
temp = z[:]
This will create a shallow copy -- mutations to elements in the list will show up in the elements in z
, but not changes to temp
directly.
For more general purposes, python has a copy
module that you can use:
temp = copy.copy(z)
Or, possibly:
temp = copy.deepcopy(z)
Why not make temp
a copy of z
:
>>> z = [1, 2]
>>> temp = z[:]
>>> temp[1] = 3
>>> z
[1, 2]
>>> temp
[1, 3]
>>>
[:]
easily makes a shallow copy of a list.
However, you might also be interested in copy.copy and copy.deepcopy, both of which come from Python's copy module.