python中的列表赋值

python中的列表赋值,python,python-3.x,list,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) 请澄清我的疑问。在python中,变量名是对底层变量的引用。list1和list2都引用同一个列表,因此当您将9插入该列表时,您可以看到两者的变化。如果希望它们是不同的,则需要创建一个显式副本(使

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

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

请澄清我的疑问。

在python中,变量名是对底层变量的引用。
list1
list2
都引用同一个列表,因此当您将
9
插入该列表时,您可以看到两者的变化。如果希望它们是不同的,则需要创建一个显式副本(使用切片表示法
list2=list1[:]
,或其他一些方法)。

在python中,变量名是对基础变量的引用。
list1
list2
都引用同一个列表,因此当您将
9
插入该列表时,您可以看到两者的变化。如果您希望它们是不同的,则需要创建一个显式副本(使用切片表示法
list2=list1[:]
,或其他一些方法)

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

正如你所写的:

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]

你被搞糊涂了

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

正如你所写的:

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]

与其他语言不同,在Python中,
list2=list1
不单独复制list1。列表1和列表2引用相同的值。请参阅以获得更详细的解释。我理解这一点。谢谢你的帮助。请在提问前搜索网页,这个问题有大约80k的浏览量,因此很容易访问!与其他语言不同,在Python中,
list2=list1
不单独复制list1。列表1和列表2引用相同的值。请参阅以获得更详细的解释。我理解这一点。谢谢你的帮助。请在提问前搜索网页,这个问题有大约80k的浏览量,因此很容易访问!如果我需要这样的要求,我想在另一个列表中复制一份用于某种目的的列表,该怎么办。我该怎么做呢。请评论。如果我需要这种要求,我想在另一个列表中复制一份用于某种目的的列表。我该怎么做呢。请评论。