python中的列表赋值

时间:2017-12-27 04:11:06

标签: python python-3.x list

我有一个如下代码,当我打印list1和list2时它显示相同的元素,但我在将现有list1分配给list2之后添加了9,所以它不应该在list2中显示9。

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

请清除我的怀疑。

2 个答案:

答案 0 :(得分:3)

在python中,变量名是底层变量的引用list1list2都引用相同的列表,因此当您将9插入该列表时,您会看到两者中的更改。如果您希望它们不同,则需要制作显式副本(使用the copy module,切片表示法list2 = list1[:]或其他方法)。

答案 1 :(得分:1)

你们之间感到困惑,

当我们有不同的列表?创建别名时

正如你所写:

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

上面的代码段会将list1映射到list2

要检查两个变量是否引用同一个对象,可以使用is运算符。

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

在您的示例中,Python创建了一个列表,由list1& list2。所以对同一个对象有两个引用。我们可以说对象[1,2,3,4]是别名的,因为它有多个名称,因为列表是可变的。因此,使用list1所做的更改会影响list2

但是,如果你想拥有不同的列表,你应该这样做:

>>> 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]