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使用sorted函数对列表进行排序的方法

    python使用sorted函数对列表进行排序的方法

    这篇文章主要介绍了python使用sorted函数对列表进行排序的方法,涉及Python使用sorted函数的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • python 字符串的驻留机制及优缺点

    python 字符串的驻留机制及优缺点

    字符串驻留是一种仅保存一份相同且不可变字符串的方法。这篇文章主要介绍了python 字符串的驻留机制,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • 选择Python写网络爬虫的优势和理由

    选择Python写网络爬虫的优势和理由

    在本篇文章里小编给各位整理了一篇关于选择Python写网络爬虫的优势和理由以及相关代码实例,有兴趣的朋友们阅读下吧。
    2019-07-07
  • Pytest单元测试框架如何实现参数化

    Pytest单元测试框架如何实现参数化

    这篇文章主要介绍了Pytest单元测试框架如何实现参数化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • 使用sklearn之LabelEncoder将Label标准化的方法

    使用sklearn之LabelEncoder将Label标准化的方法

    今天小编就为大家分享一篇使用sklearn之LabelEncoder将Label标准化的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Python中Threading用法详解

    Python中Threading用法详解

    本篇文章给大家介绍了Python中Threading的详细用法,需要的朋友跟着小编一起学习下吧。
    2017-12-12
  • Python函数的参数类型和使用技巧详解

    Python函数的参数类型和使用技巧详解

    这篇文章主要介绍了Python函数的参数类型和使用技巧详解,函数指通过专门的代码组织,用来实现特定功能的代码段,具有相对的独立性,可以被其他代码重复调用,需要的朋友可以参考下
    2023-08-08
  • Python lambda和Python def区别分析

    Python lambda和Python def区别分析

    Python支持一种有趣的语法,它允许你快速定义单行的最小函数。这些叫做lambda的函数,是从Lisp借用来的,可以用在任何需要函数的地方
    2014-11-11
  • 使用turtle绘制五角星、分形树

    使用turtle绘制五角星、分形树

    这篇文章主要为大家详细介绍了使用turtle绘制五角星、分形树,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • Python 实现打印单词的菱形字符图案

    Python 实现打印单词的菱形字符图案

    这篇文章主要介绍了Python 实现打印单词的菱形字符图案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04

最新评论