为什么在这里将列表元素分配给变量的方式不同?

2024-04-26 18:50:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一段代码:

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)

我希望这段代码可以打印:[[2,1], [3,1], [4,1]] 但它正在打印:[[2, 1], [4, 1], [4, 1]]. 我不明白为什么。请帮帮我。你知道吗


Tags: 代码lenheadprintdelappendlst帮帮我
3条回答

一个快速解决你的需要是

inc_lst = [ [ x[0]+1 , x[1] ] for x in lst]

希望能有所帮助

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

head = lst[n - 1].copy()

当你使用

head = lst[n - 1]

执行时,引用[3,1]作为头

head[0] += 1

您将[[1,1],[2,1],[3,1]]更改为[[1,1],[2,1],[4,1]]

当你做append时,lst得到了另一份head。你知道吗

因此,在del lst[0]之后,得到结果[[2,1],[4,1],[4,1]]

相关问题 更多 >