我想复制一个列表并修改副本,但是当我尝试这样做时,我最终也修改了原始列表。
我的问题的高度简化版本:
list = [2,3,6,8,9,6,7,4,56,8,9,6,7,8]
new_list = list
new_list[2] = 'n'
print list
print new_list
我只想更改新列表的第 2 项,但是当我尝试此操作时,新列表和旧列表都更改为:
[2,3,'n',8,9,6,7,4,56,8,9,6,7,8]
我在这里缺少一些非常基本的东西吗?
如果我将列表中的每个项目逐一添加到下一个列表中,我可以让它执行我想要的操作:
list = [2,3,6,8,9,6,7,4,56,8,9,6,7,8]
new_list = []
for item in list:
new_list.append(item)
new_list[2] = 'n'
print list
print new_list
如果我这样做,只有new_list
改变,但有没有更直接的方法?
最佳答案
要制作列表的新副本,请尝试:
newList = list(oldList)
或者通过切片更加神秘简洁:
newlist = oldList[:]
只需分配 oldList
到 newList
将导致两个名称指向同一个对象,如下所示:
通用对象复制功能由copy module提供。 。 (图片取自:http://henry.precheur.org/python/copy_list)。
关于python - 尝试在 Python 2 中复制列表并修改它的一个版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7050562/