Python列表的浅拷贝与深拷贝

 更新时间:2022年03月08日 08:43:15   作者:#苦行僧  
这篇文章主要介绍了Python列表的浅拷贝与深拷贝,对列表深拷贝就是无论怎样改动新列表,单维or多维,原列表都不变,需要的小伙伴可以参考下面更详细内容

对列表深拷贝就是无论怎样改动新列表(单维or多维),原列表都不变。

而下面的浅拷贝,对于多维列表,只是第一维深拷贝了(嵌套的List保存的是地址,复制过去的时候是把地址复制过去了),所以说其内层的list元素改变了,原列表也会变。

一、浅拷贝(均是只对第一层进行深拷贝)

1. for循环依次赋值

old = [1, [1, 2, 3], 3]
new = []
for i in range(len(old)):
    new.append(old[i])
new[0] = 3
new[1][0] = 3
print(old)
print(new)

'''
[1, [3, 2, 3], 3]
[3, [3, 2, 3], 3]
'''

2. 使用copy()函数

old = [1,[1,2,3],3]
new = old.copy()
new[0] = 3
new[1][0] =3
print(old)
print(new)

输出:

[1, [3, 2, 3], 3]
[3, [3, 2, 3], 3]

3. 使用列表生成式

old = [1,[1,2,3],3]
new = [i for i in old]
 
new[0] = 3
new[1][0] = 3
print(old)
print(new)

输出:

[1, [3, 2, 3], 3]
[3, [3, 2, 3], 3]

4. 使用索引 [:]

old = [1,[1,2,3],3]
new = old[:]
 
new[0] = 3
new[1][0] = 3
print(old)
print(new)

输出:

[1, [3, 2, 3], 3]
[3, [3, 2, 3], 3]

浅拷贝对于单层列表就是深拷贝,如:

old = [1,2,3]
new = old[:]
new[0] = 666
print(old)
print(new)
"""
[1, 2, 3]
[666, 2, 3]
"""

二、深拷贝

使用用deepcopy()方法,才是真正的复制了一个全新的和原列表无关的:

import copy
old = [1,[1,2,3],3]
new = copy.deepcopy(old)
 
new[0] = 3
new[1][0] = 3
"""
[1, [1, 2, 3], 3]
[3, [3, 2, 3], 3]
"""

到此这篇关于Python列表的浅拷贝与深拷贝的文章就介绍到这了,更多相关Python浅拷贝与深拷贝内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python import自己的模块报错问题及解决

    Python import自己的模块报错问题及解决

    这篇文章主要介绍了Python import自己的模块报错问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • python安装oracle扩展及数据库连接方法

    python安装oracle扩展及数据库连接方法

    这篇文章主要介绍了python安装oracle扩展及数据库连接方法,较为详细的分析了Python下载oracle扩展及Windows、Linux环境下的安装步骤、操作技巧及注意事项,需要的朋友可以参考下
    2017-02-02
  • flask入门之文件上传与邮件发送示例

    flask入门之文件上传与邮件发送示例

    本篇文章主要介绍了flask入门之文件上传与邮件发送示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • pytorch 图像中的数据预处理和批标准化实例

    pytorch 图像中的数据预处理和批标准化实例

    今天小编就为大家分享一篇pytorch 图像中的数据预处理和批标准化实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python利用临时文件实现数据的保存

    Python利用临时文件实现数据的保存

    tempfile模块专门用于创建临时文件和临时目录,它既可以在 UNIX 平台上运行良好,也可以在 Windows 平台上运行良好。本文将利用tempfile模块创建临时文件来保存数据,感兴趣的可以了解一下
    2022-07-07
  • 利用Python抢回在蚂蚁森林逝去的能量(实现代码)

    利用Python抢回在蚂蚁森林逝去的能量(实现代码)

    蚂蚁森林是一项旨在带动公众低碳减排的公益项目,每个人的低碳行为在蚂蚁森林里可计为"绿色能量",很多小伙伴都玩过,今天小编给大家分享一篇教程关于Python抢回在蚂蚁森林逝去的能量,感兴趣的朋友跟随小编一起看看吧
    2022-03-03
  • python逐像素获取栅格经纬度分别保存在两个矩阵中(代码收藏)

    python逐像素获取栅格经纬度分别保存在两个矩阵中(代码收藏)

    这篇文章主要介绍了python逐像素获取栅格经纬度分别保存在两个矩阵中的实现示例,建议收藏代码总会用到,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2024-01-01
  • 教你怎么用Python实现自动生日祝福

    教你怎么用Python实现自动生日祝福

    这篇文章主要介绍了教你怎么用Python实现自动生日祝福,文中有非常详细的代码示例,对正在学习python的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-05-05
  • 使用Python合并PDF文件并添加自定义目录及页脚的全过程

    使用Python合并PDF文件并添加自定义目录及页脚的全过程

    在处理文档时,我们经常遇到需要合并多个PDF文件并添加目录及页脚的情况,本文将介绍如何使用Python,特别是PyPDF2和reportlab库来实现这一功能我们将通过一个实用的示例来演示整个过程,需要的朋友可以参考下
    2024-03-03
  • python 爬取百度文库并下载(免费文章限定)

    python 爬取百度文库并下载(免费文章限定)

    这篇文章主要介绍了python 爬取百度文库并下载的示例,帮助大家更好的理解和学习python 爬虫的相关知识,感兴趣的朋友可以了解下
    2020-12-12

最新评论