gpt4 book ai didi

python - python 中不需要的列表分配行为

转载 作者:太空宇宙 更新时间:2023-11-03 13:04:28 25 4
gpt4 key购买 nike

当我执行以下命令时,我希望得到一个 3x3 矩阵(列表列表),其中所有单元格均为零,中央单元格为一。相反,我得到一个矩阵,其中 [0][1]、[1][1] 和 [2][1] 位置都是一个:

a = [[0]*3]*3
a[1][1] = 1

这似乎表明矩阵中的所有单元格都指向同一个对象,a[0] is a[1] 返回“True”这一事实证实了这一点。实际上,如果在上面的第二个表达式之前执行,a[0][0] is a[0][1] 也会返回“True”。那么,为什么 a[0][0]、a[0][2] 等(第一和第三“列”中的单元格)也没有更新为新值?

最佳答案

以下将执行您所期望的操作:

a = [[0]*3 for i in range(3)]

问题在于,在您的示例中,a 的三个顶级元素最终引用了同一个列表,因此当您更改 a 的一行时,所有其他行似乎也发生了变化。

我提议的代码通过为 a 的行创建三个单独的列表来改变这一点。

关于python - python 中不需要的列表分配行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8822437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com