在这种情况下,此Python的列表值分配如何工作?

时间:2019-03-29 22:37:07

标签: python python-3.x

我在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?

1 个答案:

答案 0 :(得分:0)

当您这样做:

notes

您要将matrix.append(matrix[0]) 对象(即matrix)的引用附加到matrix[0],但这并不是在创建新列表。