matrix = [[0]*1005]*1005




matrix = [[0 for _ in range(1005)] for _ in range(1005)]


我发现如果我将前者用于初始数组,并运行matrix[1][1] = 1,它将把每一行中的第二列设置为1。第二列按我的意愿执行。我不知道为什么吗?

最佳答案

[[0] * 1005] * 1005将创建一个包含1005个引用的数组,该数组具有1005个零。它们都是相同的参考,因此更改一个将更改所有其他。您可以将工作代码缩短为:

matrix = [[0] * 1005 for _ in range(1005)]


实际上,这几乎是任何人都对列表乘法语法发出的唯一警告:)

关于python - 这两种初始化数组的方式有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11336541/

10-12 02:57