Skip to main content
 首页 » 编程设计

python之这两种初始化数组的方式有什么区别

2025年05月04日10zhwl

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)] 

这几乎是任何人给你的关于列表乘法语法的唯一警告,实际上:)