在Python中,一切都应该用指针表示。因此,我希望以下代码也可以修改原始列表a
,因为我认为列表copy
将包含a
中包含的所有原始指针:
import copy
a = ["a", "a"]
copy = copy.copy(a)
for (count, e) in enumerate(copy):
copy[count] += "b"
print copy
print a
我希望看到["ab", "ab"]
。令人惊讶的是,a
仅包含["a", "a"]
,而copy
确实包含["ab", "ab"]
。使用copy = list(a)
也不起作用。
我认为只有在我写copy = copy.deepcopy(a)
时才会出现这个结果。
我哪里弄错了?获取列表中所有元素的引用并在镜像列表中修改它们的正确方法是什么?或者它在Python中是不可能的?
答案 0 :(得分:1)
copy.copy
的整个目的是创建一个没有引用旧列表的新列表。如果您确实想要保留引用,请不要复制它:
a = ["a", "a"]
copy = a