我试图在Python中将新的唯一值添加到列表中,然后检查是否实际将任何新值添加到列表中。这是我从较大的程序中提取的代码片段,足以复制遇到的问题。
from collections import Counter
def expand_list(existing_list, new_list):
for elem in new_list:
if elem not in existing_list:
existing_list.append(elem)
return existing_list
c1 = [1, 2]
c2 = [3, 4, 5]
b = c1
expand_list(c1, c2)
print(c1)
print(b)
print(Counter(b) != Counter(c1))
执行时就是结果
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
False
出于某种原因,即使将c1中的值创建为b之后调用该函数,我也无法理解c1在复制到b中之前是否已更改。
这是我运行这段代码时所期望的
[1, 2, 3, 4, 5]
[1, 2]
True
有人可以向我解释为什么会发生这种情况,以及如何在函数修改c1之前将其成功保存到b中吗?
谢谢!