>> grid = [[0]*5]*5 >>> grid [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0-6ren">
gpt4 book ai didi

python - 使用 "[[0]*x]*y"在 Python 中初始化矩阵会创建链接行?

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

这样初始化一个矩阵似乎链接了行,这样当一行发生变化时,它们都会发生变化:

>>> grid = [[0]*5]*5
>>> grid
[[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]
>>> grid[2][2] = 1
>>> grid
[[0, 0, 1, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 1, 0, 0]]

我怎样才能避免这种情况?

最佳答案

grid = [[0]*5 for i in range(5)]

注意:[int]*5 将 int 复制 5 次(但当您复制 int 时,您只是复制了值)。 [list]*5 将引用复制到同一列表 5 次。 (当你复制一个列表时,你复制了指向内存中列表的引用)。

关于python - 使用 "[[0]*x]*y"在 Python 中初始化矩阵会创建链接行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9658459/

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