Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.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_Variables_Variable Assignment - Fatal编程技术网

Python变量赋值

Python变量赋值,python,list,variables,variable-assignment,Python,List,Variables,Variable Assignment,有人能解释一下为什么在Python中会发生这种情况吗 >>> a = [1, 2, 3] >>> b = a >>> b[0] = 2 >>> print a [2, 2, 3] >>> a[0] = 4 >>> print b [4, 2, 3] >>> b = [111] >>> print a [4, 2, 3] 基本上,如果我完全修改列表,为什

有人能解释一下为什么在Python中会发生这种情况吗

>>> a = [1, 2, 3]
>>> b = a
>>> b[0] = 2
>>> print a
[2, 2, 3]
>>> a[0] = 4
>>> print b
[4, 2, 3]
>>> b = [111]
>>> print a
[4, 2, 3]

基本上,如果我完全修改列表,为什么我可以在a或b中重新分配元素并更改另一个,而不更改另一个?谢谢大家!

这是因为当您执行
b=[111]
时,您正在为b分配一个全新的列表对象。因此,b现在包含对新列表的引用,而不再包含对旧列表的引用

这是因为当您执行
b=[111]
时,您正在为b分配一个全新的列表对象。因此,b现在包含对新列表的引用,而不再包含对旧列表的引用

当您用a指定b时,两个对象现在都指向相同的内存位置。因此,在任何一个对象中所做的任何更改都将反映在另一个对象中。使用新值分配“b”时,对象内存地址将不同。详细说明:

>>> a=[1,2,3]
>>> b=a
>>> id(a)
4520124856
>>> id(b)
4520124856
>>> b=[111]
>>> id(a)
4520124856
>>> id(b)
4520173936 
>>> 
id()用于获取对象的内存地址


如果要创建“a”的精确副本而不使其具有相同的内存位置,请使用b=a[:],它将仅创建数据的副本。

当您使用a分配b时,两个对象现在都指向相同的内存位置。因此,在任何一个对象中所做的任何更改都将反映在另一个对象中。使用新值分配“b”时,对象内存地址将不同。详细说明:

>>> a=[1,2,3]
>>> b=a
>>> id(a)
4520124856
>>> id(b)
4520124856
>>> b=[111]
>>> id(a)
4520124856
>>> id(b)
4520173936 
>>> 
id()用于获取对象的内存地址


如果要创建“a”的精确副本而不使其具有相同的内存位置,请使用b=a[:],它将仅创建数据的副本。

当我们定义变量b=a时,请将此值保留在内存位置x中。 点a和b都是x内存位置。 所以我们改变了b的值,a的值也改变了。 我们将新值赋给b,使其存储在另一个内存位置,b指向新的内存位置。
所以a的值保持原样。

当我们定义变量b=a时,将该值保留在内存位置x中。 点a和b都是x内存位置。 所以我们改变了b的值,a的值也改变了。 我们将新值赋给b,使其存储在另一个内存位置,b指向新的内存位置。
所以a的值保持不变。

您能告诉我您正在运行哪个版本的python吗?试试
b[:]=[1,1,1,1]
你能告诉我你正在运行哪个版本的python吗?试试
b[:]=[1,1,1,1]
这很有意义,谢谢!这很有道理,谢谢!