Python中使用copy模块实现列表(list)拷贝

 更新时间:2015年04月14日 09:55:47   投稿:junjie  
这篇文章主要介绍了Python中使用copy模块实现列表(list)拷贝,本文讲解了简单列表的复制和复杂列表复制的解决方法,需要的朋友可以参考下

引用是指保存的值为对象的地址。在 Python 语言中,一个变量保存的值除了基本类型保存的是值外,其它都是引用,因此对于它们的使用就需要小心一些。下面举个例子:

问题描述:已知一个列表,求生成一个新的列表,列表元素是原列表的复制

复制代码 代码如下:

a=[1,2]
b=a

这种做法其实并未真正生成一个新的列表,b指向的仍然是a所指向的对象。这样,如果对a或b的元素进行修改,a,b的值同时发生变化。

解决的方法为:

复制代码 代码如下:

a=[1,2]
b=a[:]

这样修改a对b没有影响。修改b对a没有影响。

但 这种方法只适用于简单列表,也就是列表中的元素都是基本类型,如果列表元素还存在列表的话,这种方法就不适用了。原因就是,象a[:]这种处理,只是将列 表元素的值生成一个新的列表,如果列表元素也是一个列表,如:a=[1,[2]],那么这种复制对于元素[2]的处理只是复制[2]的引用,而并未生成 [2]的一个新的列表复制。为了证明这一点,测试步骤如下:

复制代码 代码如下:

>>> a=[1,[2]]
>>> b=a[:]
>>> b
[1, [2]]
>>> a[1].append(3)
>>> a
[1, [2, 3]]
>>> b
[1, [2, 3]]

可见,对a的修改影响到了b。如果解决这一问题,可以使用copy模块中的deepcopy函数。修改测试如下:
复制代码 代码如下:

>>> import copy
>>> a=[1,[2]]
>>> b=copy.deepcopy(a)
>>> b
[1, [2]]
>>> a[1].append(3)
>>> a
[1, [2, 3]]
>>> b
[1, [2]]

有时候知道这一点是非常重要的,因为可能你的确需要一个新的列表,并且对这个新的列表进行操作,同时不想影响原来的列表。

相关文章

  • Python字符串格式化str.format()方法的实现

    Python字符串格式化str.format()方法的实现

    字符串的格式化是一个非常重要的功能,用于创建包含变量值的字符串,本来就来介绍一下Python字符串格式化str.format()方法的实现,感兴趣的可以了解一下
    2023-11-11
  • python实现的简单文本类游戏实例

    python实现的简单文本类游戏实例

    这篇文章主要介绍了python实现的简单文本类游戏,以两个实例形式分析了python操作文本与字符串的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • Python创建相同值数组/列表的两种方法

    Python创建相同值数组/列表的两种方法

    众所周知数组是一种用来在计算机中存储连续的相同类型数值的数据结构,这篇文章主要给大家介绍了关于Python创建相同值数组/列表的两种方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • Pytorch 统计模型参数量的操作 param.numel()

    Pytorch 统计模型参数量的操作 param.numel()

    这篇文章主要介绍了Pytorch 统计模型参数量的操作 param.numel(),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • Flask应用部署与多端口管理实践全指南

    Flask应用部署与多端口管理实践全指南

    在开发和部署Web应用时,开发者常常需要处理多端口服务,防火墙配置以及生产环境优化等问题,下面小编就来和大家简单讲讲Flask应用部署与多端口管理实践的相关知识吧
    2025-04-04
  • 用python拟合等角螺线的实现示例

    用python拟合等角螺线的实现示例

    这篇文章主要介绍了用python拟合等角螺线的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Python深入学习之装饰器

    Python深入学习之装饰器

    这篇文章主要介绍了Python深入学习之装饰器,装饰器(decorator)是一种高级Python语法,本文全面介绍了Python中的装饰器,需要的朋友可以参考下
    2014-08-08
  • python爬虫基础知识点整理

    python爬虫基础知识点整理

    在本篇文章里小编给大家整理的是一篇关于python爬虫基础知识点整理内容,有兴趣的朋友们可以学习下。
    2020-06-06
  • 简单快捷:NumPy入门教程的环境设置

    简单快捷:NumPy入门教程的环境设置

    NumPy是Python语言的一个扩展程序库,支持高阶大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,本教程是为那些想了解NumPy的基础知识和各种功能的人准备的,它对算法开发人员特别有用,需要的朋友可以参考下
    2023-10-10
  • python Boltons库实用功能探索(深度复制类型检查重试机制)

    python Boltons库实用功能探索(深度复制类型检查重试机制)

    这篇文章主要为大家介绍了python Boltons库实用功能探索包含深度复制类型检查重试机制及数据结构转换实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01

最新评论