问题
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.
回答1:
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.
回答2:
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]
来源:https://stackoverflow.com/questions/47986224/list-assignment-in-python