【问题标题】:Why does the nested array duplicating its elements in python? [duplicate]为什么嵌套数组在python中复制其元素? [复制]
【发布时间】: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