【发布时间】:2023-04-01 20:55:02
【问题描述】:
看看这段代码
a=[[0]*3]*3
a[1][1]=1
for x in a:
print(*x)
#output
# 0 1 0
# 0 1 0
# 0 1 0
看看这段代码
a=[
[0,0,0],
[0,0,0],
[0,0,0]
]
a[1][1]=1
for x in a:
print(*x)
#output
# 0 0 0
# 0 1 0
# 0 0 0
我相信在这两种情况下,数组 a 是相同的。
但是为什么结果不一样呢。
【问题讨论】:
-
不一样,第一个例子是创建一个列表并复制三遍。在第二个示例中,您创建了三个单独的列表
-
@ChrisDoyle 是的,但我只修改了第二个列表的一个元素(在第一种情况下),它被应用于所有。我想知道为什么?
-
是的,但在第一种情况下您只有一个列表。就像在说
a=[1, 2, 3]; b=a; b[0]=9
。在此示例中,您只有一个列表,并且 a 和 B 都指向同一个列表,因此更改 b 中的元素也会更改 a 中的元素,因为它们都指向同一个列表。在你的第一个例子中,你做同样的事情。您创建一个列表,然后制作 3 个指向该 1 个列表的副本。因此,如果您对其中一个副本进行更改,它将反映在所有副本中,因为只有一个列表并且它们都指向它
标签:
arrays
python-3.x
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:为什么嵌套数组在python中复制其元素? [复制] - Python技术站