Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我不知道';当我';我在python中使用列表类型变量。为什么会这样?_Python_List_Logic - Fatal编程技术网

我不知道';当我';我在python中使用列表类型变量。为什么会这样?

我不知道';当我';我在python中使用列表类型变量。为什么会这样?,python,list,logic,Python,List,Logic,为什么执行此代码后会得到1,2,3,4,5-输出: list1 = [1,2,3,4] list2 = list1 list1.append(5) print(list2) # it will output 1,2,3,4,5 另一种情况: list1 = 5 list2 = list1 list1 += 1 print(list2) # it will output 5 为什么它是这样工作的?我认为理解变量和对象之间的区别很重要 变量是具有名称且可以引用的对象,这是访问对象的一种方式 对象

为什么执行此代码后会得到1,2,3,4,5-输出:

list1 = [1,2,3,4]
list2 = list1
list1.append(5)
print(list2) # it will output 1,2,3,4,5
另一种情况:

list1 = 5
list2 = list1
list1 += 1
print(list2) # it will output 5

为什么它是这样工作的?

我认为理解变量和对象之间的区别很重要

变量是具有名称且可以引用的对象,这是访问对象的一种方式

对象是暂时存储在计算机中的“数据”

当您创建第一个列表时,您创建了两件事:一个类型为list的对象(
[1,2,3,4]
)和一种访问它的方式,
list1
(一个变量)

定义
list2
时,不会创建另一个列表。由于您告诉程序
list2
指向
list1
的位置,因此您可以创建另一个对以前创建并可使用
list1
引用的列表的访问权限。因此,使用
list1
list2
没有任何区别,两者都指向同一个对象。您可以使用两个选项中的任意一个访问后者,结果相同


关于第二个示例,您首先像在第一个示例中一样“链接”两个变量,但是当您执行操作
+=
时,您会断开该链接,因为
=
更改了变量所指向的对象。因此,变量不再是“同步的”

好吧,我不确定另一篇帖子是否会真正回答他的问题@CDJB。这里真正的区别在于,在第一部分中,您使用的是
列表
,而在第二部分中,您使用的是
浮点
,它是一种不同的数据类型,因此表现不同。@CDJB我认为您的评论也不能回答他们的问题。他们不是问如何克隆一个列表,而是问为什么它会这样。如果你阅读问题的答案,而不仅仅是标题,他们会回答OP的问题。谢谢你的链接。我现在明白了。我对此有点困惑。很抱歉重复了。@CDJB我做了,但在回答中他们只解释了列表是如何工作的。没有提到浮动和列表之间的区别。谢谢您的回复。