必须使用深拷贝避免引用共享,因赋值或切片仅创建浅拷贝,修改嵌套元素会影响原列表;使用copy.deepcopy()可递归复制所有层级,确保数据独立。

Python中嵌套列表的拷贝不能简单使用赋值操作,因为这只会复制引用,修改原列表或新列表会影响彼此。要真正拷贝嵌套列表,必须进行深拷贝。
对于包含列表的列表(即嵌套结构),推荐使用 copy 模块中的 deepcopy 函数。它会递归地复制所有层级,确保内外层数据完全独立。
示例:
import copy
original = [[1, 2], [3, 4]]
new_list = copy.deepcopy(original)
# 修改新列表不影响原列表
new_list[0][0] = 99
print(original) # 输出: [[1, 2], [3, 4]]
print(new_list) # 输出: [[99, 2], [3, 4]]
像 new_list = original[:] 或 list(original) 这样的方法只能创建浅拷贝。它们会新建外层列表,但内部嵌套的子列表仍是原对象的引用。
立即学习“Python免费学习笔记(深入)”;
问题示例:
original = [[1, 2], [3, 4]]
new_list = original[:] # 浅拷贝
new_list[0][0] = 99
print(original) # 输出: [[99, 2], [3, 4]] → 被意外修改!
如果你只想对部分结构做深拷贝,或者想手动控制过程,可以结合列表推导和 deepcopy:
import copy
original = [[1, 2], [3, 4]]
new_list = [copy.deepcopy(sublist) for sublist in original]
不过这种情况一般直接用 copy.deepcopy(original) 更简洁安全。
基本上就这些。只要涉及嵌套结构,优先考虑 deepcopy,避免引用共享带来的副作用。
以上就是python嵌套列表如何拷贝的详细内容,更多请关注php中文网其它相关文章!
python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号