Mutability Of Lists In Python
Solution 1:
You are not mutating l1
. You are assigning a new object to the same name, which makes that name point to a new object. You are moving a label, not modifying an object. The only remaining reference to the list that l1
used to point to is now ans[0]
.
Solution 2:
In your first example, l
is a pointer, as well as b
.
l
is then appended to b, so b[0]
now refers to the pointer.
Next, you append 4 to b[0]
, which is the same thing as l
, so 4 is added to both b[0]
andl
.
In your second example, ans
contains the pointer of l1
, just like b
contained the pointer of l
Then, you changed l1
itself by assigning it to a different array, so l1
changed but ans[0]
did not.
The biggest takeaway from this is that append
just changes the list, and the pointer remains the same. But when you set a variable to a different list, the pointer changes.
Solution 3:
Replace
>>>l1 = [2, 3, 4]
with
>>>l1[:] = [2, 3, 4]
That will not assign a new list to l1.
Post a Comment for "Mutability Of Lists In Python"