hieko
hieko

Reputation: 393

List assignment in python

I have a code like below,when i print the list1 and list2 it shows same elements but i have added the 9 after the assignment of existing list1 to list2 so it should not show 9 in list2.

list1=[1,2,3,4]
list2=list1
list1.insert(4,9)
print(list1)
print(list2)

please clear my doubt.

Upvotes: 2

Views: 21056

Answers (3)

madhukar kasani
madhukar kasani

Reputation: 1

list1=[1,2,3,4] then list1= list2 which means the id of both lists is the same. even the values are the same then list1.insert(4,9) it means to insert the value 9 at index position 4 then the list1 is [1,2,3,4,9] we know the id of both list1 and list2 is the same then the list1 and list2 values are also the same list1=[1,2,3,4,9] list2=[1,2,3,4,9]

Upvotes: 0

Daniel H
Daniel H

Reputation: 7433

In python, a variable name is a reference to the underlying variable. Both list1 and list2 refer to the same list, so when you insert 9 into that list, you see the change in both. You need to make an explicit copy (using the copy module, slice notation list2 = list1[:], or some other method) if you want them to be distinct.

Upvotes: 8

Amit Upadhyay
Amit Upadhyay

Reputation: 7391

You are confused between,

when we have different lists? and when an alias is created?.

As you have written:

list1=[1,2,3,4]
list2=list1

The above code snippet will map list1 to list2.

To check whether two variables refer to the same object, you can use is operator.

>>> list1 is list2
# will return "True"

In your example, Python created one list, reference by list1 & list2. So there are two references to the same object. We can say that object [1,2,3,4] is aliased as it has more than one name, and since lists are mutable. So changes made using list1 will affect list2.

However, if you want to have different lists, you should do this:

>>> list1 = [1, 2, 3, 4]
>>> list2 = list1[:]  # here list2 is created as a copy of list1
>>> list1.insert(4, 9)
>>> print list1
[1, 2, 3, 4, 9]
>>> print list2
[1, 2, 3, 4]

Upvotes: 4

Related Questions