尽管使用了 list.copy(),Python 还是改变了原始列表
Python alters original list despite using list.copy()
所以我刚刚遇到了一些奇怪的事情。
我在开始编程时遇到了复制列表和更改的问题,然后了解到我必须使用 my_list.copy()
才能获得实际副本。现在我只是偶然发现了同样的效果,尽管使用了 list.copy()
.
所以这是一个例子:
ori = [['1', '2', '3'],['1', '2', '3'],['1', '2', '3'],['1', '2', '3']]
copy = ori.copy()
for i, item in enumerate(copy):
del copy[i][0]
print('Original list: ', ori)
print('Copy of list: ', copy)
我期望的输出:
Original list: [['1', '2', '3'],['1', '2', '3'],['1', '2', '3'],['1', '2', '3']]
Copy of list: [['2', '3'], ['2', '3'], ['2', '3'], ['2', '3']]
实际输出:
Original list: [['2', '3'],['2', '3'],['2', '3'],['2', '3']]
Copy of list: [['2', '3'], ['2', '3'], ['2', '3'], ['2', '3']]
所以我想我的问题是:这是预期的行为吗?我需要使用 copy.deepcopy()
还是有其他内置工具的解决方案?
我在 PC 上使用 Python 3.8.1 我刚刚安装了这个 'issue'.
copy()
方法 returns 列表的浅拷贝。
请改用 copy.deepcopy()
。
所以我刚刚遇到了一些奇怪的事情。
我在开始编程时遇到了复制列表和更改的问题,然后了解到我必须使用 my_list.copy()
才能获得实际副本。现在我只是偶然发现了同样的效果,尽管使用了 list.copy()
.
所以这是一个例子:
ori = [['1', '2', '3'],['1', '2', '3'],['1', '2', '3'],['1', '2', '3']]
copy = ori.copy()
for i, item in enumerate(copy):
del copy[i][0]
print('Original list: ', ori)
print('Copy of list: ', copy)
我期望的输出:
Original list: [['1', '2', '3'],['1', '2', '3'],['1', '2', '3'],['1', '2', '3']]
Copy of list: [['2', '3'], ['2', '3'], ['2', '3'], ['2', '3']]
实际输出:
Original list: [['2', '3'],['2', '3'],['2', '3'],['2', '3']]
Copy of list: [['2', '3'], ['2', '3'], ['2', '3'], ['2', '3']]
所以我想我的问题是:这是预期的行为吗?我需要使用 copy.deepcopy()
还是有其他内置工具的解决方案?
我在 PC 上使用 Python 3.8.1 我刚刚安装了这个 'issue'.
copy()
方法 returns 列表的浅拷贝。
请改用 copy.deepcopy()
。