MST

星途 面试题库

面试题:Python中修改列表元素时如何避免浅拷贝问题

在Python中,假设有列表a = [1, [2, 3]],当你想修改子列表中的元素,例如将2改为20,同时避免在某些操作中出现浅拷贝带来的意外结果,应该如何做?请给出代码示例并解释原因。
28.3万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
a = [1, [2, 3]]
# 深拷贝整个列表,需要导入copy模块
import copy
new_a = copy.deepcopy(a)
new_a[1][0] = 20
print(new_a) 

解释:使用copy.deepcopy函数可以对列表a进行深拷贝。浅拷贝只会复制顶层对象,对于嵌套的子列表只是复制引用,所以在浅拷贝后修改子列表会影响原始列表。而深拷贝会递归地复制所有层次的对象,这样修改new_a中的子列表不会对原始的a产生影响。