Python列表copy
来源:互联网 发布:java技术手册 编辑:程序博客网 时间:2024/04/30 16:46
引用是指保存的值为对象的地址。在 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]]
有时候知道这一点是非常重要的,因为可能你的确需要一个新的列表,并且对这个新的列表进行操作,同时不想影响原来的列表。
原文链接:http://www.cnblogs.com/mguo/archive/2013/02/25/2931894.html
- Python列表copy
- Python中列表的copy方法
- python学习笔记——列表copy
- 【Python语法笔记】列表的copy()函数
- Python中使用copy模块实现列表(list)拷贝
- Python中使用copy模块实现列表(list)拷贝
- python copy()
- python copy.copy和copy.deepcopy
- 列表中的Copy与DeepCopy
- python copy deepcopy
- python copy详解
- python copy & deepcopy 区别
- python json,copy
- python copy模块
- python copy * shallow
- Python copy模块
- python copy & deepcopy 区别
- python模块 - copy模块
- 引水入城
- phpmyadmin安装
- 初识hybris
- linux 命令系列之算术运算(50)
- 恶意代码实战分析-第一章:静态分析基础
- Python列表copy
- C++的多态概念:
- mini2440硬件篇之SPI
- boost.asio系列——buffer
- Java第二次作业
- mini2440 256M nand版本使用uboot
- mem info
- MINI2440 下对 NandFlash 烧写 和 裸版程序环境搭建初步
- 使用Jsoup处理HTML文档