Skip to content Skip to sidebar Skip to footer

Mutability Of Lists In Python

Example one: Changing the value that has been appended to b changes the value in the original list l >>> l = [1 , 2, 3] >>> b = [] >>> b.append(l) >&g

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"