python空矩阵append会一起append

先看源代码

start=[[]]*3
for i in range(9):
    if i < 3:
        start[0].append(1)
    elif i < 6:
        start[1].append(2)
    else:
        start[2].append(3)
print(start)

理想的输出为[[1, 1, 1], [2, 2, 2], [3, 3, 3]]

但实际上的输出为[[1, 1, 1, 2, 2, 2, 3, 3, 3], [1, 1, 1, 2, 2, 2, 3, 3, 3], [1, 1, 1, 2, 2, 2, 3, 3, 3]]

ChatGPT给出的解释为“因为 start包含了三个相同的空列表,所以对任意一个空列表进行修改会对所有的空列表进行修改”

它给出的修改意见是将第一行改为如下形式

start=[[] for x in range(3)]

这样会创建出包含三个不同的空列表的列表,这样就可以对每个子列表进行独立操作了。

你可能感兴趣的:(python,开发语言)