Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在尝试对列表的 python 列表做一些事情,但我发现索引有些奇怪。 如果我想创建一个 2*2 的“矩阵”,我会
matrix = [[0]*2]*2
然后,如果我想通过使用来更改第一行第一列,比如说,
matrix[0][0] = 1
我会得到[[1,0],[1,0]],而不是[[1,0],[0,0]]。有谁知道出了什么问题?
[[1,0],[1,0]]
[[1,0],[0,0]]
在列表上使用*运算符会创建一个浅拷贝,因此[[0]*2]*2等效于以下内容:
*
[[0]*2]*2
inner = [0, 0] matrix = [inner, inner]
因为 中的两个位置matrix都是对同一个列表的引用,所以对其中一个的任何修改都会修改另一个。相反,请使用以下内容:
matrix
matrix = [[0]*2 for i in range(2)]