python嵌套列表如何拷贝

冷炫風刃
发布: 2025-11-24 23:49:02
原创
939人浏览过
必须使用深拷贝避免引用共享,因赋值或切片仅创建浅拷贝,修改嵌套元素会影响原列表;使用copy.deepcopy()可递归复制所有层级,确保数据独立。

python嵌套列表如何拷贝

Python中嵌套列表的拷贝不能简单使用赋值操作,因为这只会复制引用,修改原列表或新列表会影响彼此。要真正拷贝嵌套列表,必须进行深拷贝。

使用 copy.deepcopy() 深拷贝

对于包含列表的列表(即嵌套结构),推荐使用 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]]

为什么不能用普通切片或 list()?

new_list = original[:]list(original) 这样的方法只能创建浅拷贝。它们会新建外层列表,但内部嵌套的子列表仍是原对象的引用。

立即学习Python免费学习笔记(深入)”;

万彩商图
万彩商图

专为电商打造的AI商拍工具,快速生成多样化的高质量商品图和模特图,助力商家节省成本,解决素材生产难、产图速度慢、场地设备拍摄等问题。

万彩商图 201
查看详情 万彩商图

问题示例:

original = [[1, 2], [3, 4]]
new_list = original[:] # 浅拷贝

new_list[0][0] = 99
print(original) # 输出: [[99, 2], [3, 4]] → 被意外修改!

其他可行方式:列表推导式 + deepcopy(特殊情况)

如果你只想对部分结构做深拷贝,或者想手动控制过程,可以结合列表推导和 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在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号