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多线程实现动态图绘制

    python多线程实现动态图绘制

    这篇文章主要介绍了python多线程实现动态图绘制,文章基于Python的相资料展开动态图的绘制相关内容,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-04-04
  • 详解如何修改python中字典的键和值

    详解如何修改python中字典的键和值

    这篇文章主要介绍了详解如何修改python中字典的键和值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Python常用正则表达式符号浅析

    Python常用正则表达式符号浅析

    这篇文章主要介绍了Python常用正则表达式符号,非常实用,需要的朋友可以参考下
    2014-08-08
  • 详解如何在VS Code中安装Spire.PDF for Python

    详解如何在VS Code中安装Spire.PDF for Python

    这篇文章主要为大家详细介绍了如何在VS Code中安装Spire.PDF for Python,文中的示例代码简洁易懂,有需要的小伙伴可以跟随小编一起学习一下
    2023-10-10
  • Python实现GPU加速的基本操作

    Python实现GPU加速的基本操作

    本文简单介绍了Python实现GPU加速的基本操作,文中运用大量代码讲解的非常详细,有一定的参考价值,需要学习相关知识的小伙伴一起来看看吧
    2021-08-08
  • windows下python使用ffmpeg实现rtsp推流

    windows下python使用ffmpeg实现rtsp推流

    这篇文章主要为大家详细介绍了在windows环境下python如何使用ffmpeg实现rtsp推流,文中的示例代码讲解详细,有需要的小伙伴可以了解一下
    2023-09-09
  • 使用 Python 查找本月的最后一天的方法汇总

    使用 Python 查找本月的最后一天的方法汇总

    这篇文章主要介绍了使用 Python 查找本月的最后一天,在本文中,我们学习了使用 datetime 和 calendar 等内置库以及 arrow 和 pandas 等第三方库在 Python 中查找月份最后一天的各种方法,需要的朋友可以参考下
    2023-05-05
  • Python实现的数据结构与算法之快速排序详解

    Python实现的数据结构与算法之快速排序详解

    这篇文章主要介绍了Python实现的数据结构与算法之快速排序,详细分析了快速排序的原理与Python实现技巧,需要的朋友可以参考下
    2015-04-04
  • 基于Python实现子域名收集工具

    基于Python实现子域名收集工具

    在网络安全领域中,发现和管理攻击面绝对是一项必须的任务,而对域名的寻找和分析是发现攻击面的重要步骤,本文将使用Python编写一个子域名收集,需要的可以参考下
    2024-02-02
  • python中input()与raw_input()的区别分析

    python中input()与raw_input()的区别分析

    这篇文章主要介绍了python中input()与raw_input()的区别,需要的朋友可以参考下
    2016-02-02

最新评论