【发布时间】:2017-01-29 18:57:17
【问题描述】:
在 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 中是不可能的?
【问题讨论】:
-
字符串是不可变的?
-
字符串是不可变的。
-
@chepner 击败你 3 秒 :P
-
是的。您没有修改对象。您只需创建新的,并将它们放入新列表中。字符串是不可变的——它们不能被修改。
-
@Zizouz212 我更愿意认为我回答你的问题非常快:)
标签: python list pointers reference copy