+ 1
Chanaging member of list impacting copy partially
Running below code x = [1, [2,3, [4,5,6]]] y = x[:] x[0] = 55 # impacted only x x[1][0] = 66 # impacted x & y x[1][2][1] = 79 # impacted x & y print(x,y) This code gives the result as below [55, [66, 3, [4, 79, 6]]], [1, [66, 3, [4, 79, 6]]] x[0] = 55 not impacted y. But x[1][0] = 66 & x[1][2][1] = 79 impacted both x & y. Can anyone help with correct reason?
1 Odpowiedź
+ 1
Line 4 and 5 affect both x and y because they refer to the same lists in lists.
When copied y = x[:], the 2 lists inside of x are not created as new lists but only the reference to them is passed to y.
a = [4, 5, 6]
b = [2, 3, a]
x = [1, b]
y = x[:]
# x and y refer to a and b
# altering a and b impacts x and y