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

多次追加后python列表值修改的行为

多次追加后python列表值修改的行为,python,Python,我使用运算符“*”追加并展开一个列表 >>> A = [[0, 0]] * 2 >>> A [[0, 0], [0, 0]] 当我试图修改第一个列表项中的第一个元素时,它修改了列表中所有项中的第一个元素 >>> A[0][0] = 10 >>> A [[10, 0], [10, 0]] 你能帮我解释一下原因吗?背后的机制是什么?乘法创建引用的副本,而不是对象的副本。该引用类似于C中的指针,两个引用都指向内存中的同一对象,

我使用运算符“*”追加并展开一个列表

>>> A = [[0, 0]] * 2
>>> A
[[0, 0], [0, 0]]
当我试图修改第一个列表项中的第一个元素时,它修改了列表中所有项中的第一个元素

>>> A[0][0] = 10
>>> A
[[10, 0], [10, 0]]

你能帮我解释一下原因吗?背后的机制是什么?

乘法创建引用的副本,而不是对象的副本。该引用类似于C中的指针,两个引用都指向内存中的同一对象,但该对象只有一个副本

如果要创建该对象的副本,请执行以下操作:

A = [[0, 0] for _ in range(2)]

这是一个生成器表达式,python将“运行”迭代,因此每次都创建一个新元素。

Multiply创建引用的副本,而不是对象的副本。该引用类似于C中的指针,两个引用都指向内存中的同一对象,但该对象只有一个副本

如果要创建该对象的副本,请执行以下操作:

A = [[0, 0] for _ in range(2)]

这是一个生成器表达式,python将“运行”迭代,因此每次都创建一个新元素。

Multiply创建引用的副本,而不是对象的副本。该引用类似于C中的指针,两个引用都指向内存中的同一对象,但该对象只有一个副本

如果要创建该对象的副本,请执行以下操作:

A = [[0, 0] for _ in range(2)]

这是一个生成器表达式,python将“运行”迭代,因此每次都创建一个新元素。

Multiply创建引用的副本,而不是对象的副本。该引用类似于C中的指针,两个引用都指向内存中的同一对象,但该对象只有一个副本

如果要创建该对象的副本,请执行以下操作:

A = [[0, 0] for _ in range(2)]

这是一个生成器表达式,python将“运行”迭代,因此每次都创建一个新元素。

a
包含对同一列表的两个引用。你所做的基本上和

AA = [0, 0]
A = [AA, AA]
因此,
a[0]
a[1]
AA
的修改是等效的

解决方法:

A = [[0, 0], [0, 0]]
或者,如文中所述


A
包含对同一列表的两个引用。你所做的基本上和

AA = [0, 0]
A = [AA, AA]
因此,
a[0]
a[1]
AA
的修改是等效的

解决方法:

A = [[0, 0], [0, 0]]
或者,如文中所述


A
包含对同一列表的两个引用。你所做的基本上和

AA = [0, 0]
A = [AA, AA]
因此,
a[0]
a[1]
AA
的修改是等效的

解决方法:

A = [[0, 0], [0, 0]]
或者,如文中所述


A
包含对同一列表的两个引用。你所做的基本上和

AA = [0, 0]
A = [AA, AA]
因此,
a[0]
a[1]
AA
的修改是等效的

解决方法:

A = [[0, 0], [0, 0]]
或者,如文中所述

*
不是列表的“附加运算符”。
*
不是列表的“附加运算符”。
*
不是列表的“附加运算符”。
*
不是列表的“附加运算符”。