为什么在此处将列表元素辅助变量的工作方式不同?

Meh*_*tin 2 python arrays list variable-assignment

我有这段代码:

lst = [[1,1], [2,1],[3,1]]
n = len(lst)
head = lst[n - 1]

head[0] += 1

lst.append(head)
del lst[0]

print(lst)
Run Code Online (Sandbox Code Playgroud)

而且我希望可以打印此代码:[[2,1], [3,1], [4,1]] 但它正在打印:[[2, 1], [4, 1], [4, 1]]. 我不明白为什么。请帮我。

Ted*_*low 5

当您编写时head = lst[n - 1],通过引用将head设置为lst的最后一个元素。这意味着[3,1]两个变量共享具有值的对。如果您不想更改原始列表中的配对,请确保head复制数据。

head = lst[n - 1].copy()
Run Code Online (Sandbox Code Playgroud)