[python学习]列表复制
来源:互联网 发布:个人工作计划安排软件 编辑:程序博客网 时间:2024/06/07 23:15
引用是指保存的值为对象的地址。在 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://blog.donews.com/limodou/
- [python学习]列表复制
- Python列表复制
- Python列表复制操作
- python列表的复制
- Python之复制列表
- 【python】列表的复制问题
- python中的列表的复制
- python实例(复制列表)
- 【Python】Python3 List 列表复制
- python list(列表)赋值与复制
- [Python]列表复制的几种方法
- python中复制列表的正确方法
- Python的坑(1) -- 列表复制
- Python-复制列表的几个小方法
- python中如何正确的复制列表
- python基础实例6:列表复制
- Python列表数据复制冒号使用
- python 学习列表
- TCP协议理解
- STL中的常用的vector,map,set,Sort用法
- Frame-By-Frame Animations的使用方法
- C#字符串和正则表达式参考手册(笔记)
- servlet非线程安全,解决办法
- [python学习]列表复制
- 使用wireshark分析网络报文
- C#创建动态数组
- 某些网站
- 使用neoclipse
- Exchange Server2010的部署规划(一)
- neo4j的入门示例
- TreeSet中实现自己的Comparator,以及常见的Collections方法的使用
- 指针函数、函数指针及其示例