我在Python的值分配中遇到了一个奇怪的行为。如果我创建诸如List =[[0, 0], [0, 0]]
之类的列表,并且想要更改索引为1的列表中索引为1的值,则只需使用:List[1][1] = 1
。但是,这不是下面的代码的情况。尽管列表看起来与上面提到的列表相同,但它分配的值比我期望的更多。有谁能解释它是如何工作的?
size = 2
matrix = [[]]
for j in range(size):
matrix[0].append(0)
for i in range(size-1):
matrix.append(matrix[0])
matrix[1][1] = 1
print(str(matrix))
我希望输出为[[0, 0], [0, 1]]
,但实际输出为[[0, 1], [0, 1]]
。为什么位置matrix[0][1]
处的值分配为1?
答案 0 :(得分:0)
当您这样做:
notes
您要将matrix.append(matrix[0])
对象(即matrix
)的引用附加到matrix[0]
,但这并不是在创建新列表。