Python 列表拷贝
前言
Python 列表拷贝很容易搞错,这里做一下简单的总结。通常我们只是想根据现有的列表来创建一个全新的列表,而一说到列表拷贝,可能会下意识的想到直接用“=”,那么我们通过示例来看看实际的结果。
正文
直接使用“=”赋值
看一个示例:
listA=["aaa","bbb","ccc"]
listB=listA
print("listA = ",listA)
print("listB = ",listB)
输出如下:
listA = ['aaa', 'bbb', 'ccc']
listB = ['aaa', 'bbb', 'ccc']
这看起来好像拷贝成功了,那么再做个试验:
listA=["aaa","bbb","ccc"]
listB=listA
print("listA = ",listA)
print("listB = ",listB)listA.append("ddd")
listB.append("eee")print("after listA = ",listA)
print("after listB = ",listB)
输出如下:
listA = ['aaa', 'bbb', 'ccc']
listB = ['aaa', 'bbb', 'ccc']
after listA = ['aaa', 'bbb', 'ccc', 'ddd', 'eee']
after listB = ['aaa', 'bbb', 'ccc', 'ddd', 'eee']
这时候发现输出结果和我们预期的并不一样,其原因是,我们直接将 listA 赋值给 listB,实际上只是将新变量 listB 关联到了 listA,并没有将 listA 的副本存储到 listB,所以当我们分别给 listA 和 listB 插入数据的时候,都是插入到 listA 中,而 listB 可以理解为 listA 的一个“别名”。所以如果想要做 Python 的列表拷贝,千万不要用直接赋值的方式,这样并不能得到我们想要的结果。
正确的拷贝方式
Python 提供了一种新的方式来进行列表拷贝,那就是“切片”。
示例如下:
listB=listA[:]
再来看看上面的示例:
listA=["aaa","bbb","ccc"]
listB=listA[:]
print("listA = ",listA)
print("listB = ",listB)listA.append("ddd")
listB.append("eee")print("after listA = ",listA)
print("after listB = ",listB)
输出结果:
listA = ['aaa', 'bbb', 'ccc']
listB = ['aaa', 'bbb', 'ccc']
after listA = ['aaa', 'bbb', 'ccc', 'ddd']
after listB = ['aaa', 'bbb', 'ccc', 'eee']
OK,这才是我们真正想要的结果,listB 完全是全新的列表。
以上方式其实类似于 C++的深拷贝和浅拷贝,在使用过程中要相当注意,很容易出错。
Python 列表拷贝相关推荐
- [转载] Python列表拷贝复制函数copy()函数的作用
参考链接: Python list | copy 列表是可变类型数据,且实际操作过程中经常需要队列表进行增加.删除.修改列表里面的元素, 所以经常需要复制拷贝原始列表进行备份. Python使用cop ...
- python拷贝是什么知识点_地址对象python 列表拷贝知识点 地址对象
时间紧张,先记一笔,后续优化与完善. 我们要需拷贝一个表列的话,可以用一个特别的方法,天今给大家说下. 我先定义一个表列 a=[1,2,34] 然后我通过内置方法id()来查看对象的地址 print ...
- python列表字典操作_Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结...
创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_star ...
- python读取字符串的list dict_转:Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结...
1 创建列表2 sample_list = ['a',1,('a','b')]3 4 Python 列表操作5 sample_list = ['a','b',0,1,3]6 7 得到列表中的某一个值8 ...
- [转载] Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
创建列表 sample_list = ['a',1,('a','b')]Python 列表操作 sample_list = ['a','b',0,1,3]得到列表中的某一个值 value_start ...
- Python列表List
Python列表List(可变的): 列表的特点: 1.其中的元素可以不是同一类型的: example: list = [1, 2, "Qihe", True] 2.列表中的元素可 ...
- python列表浅复制_Python列表的深复制和浅复制示例详解
一.深复制与浅复制 列表是Python中自带的一种数据结构,在使用列表时,拷贝操作不可避免,下面简单讨论一下列表的深复制(拷贝)与浅复制 首先看代码: l1 = [5, 4, 3, 2, 1] # 用 ...
- python列表操作函数大全_Python列表操作函数
列表可以进行多个数据的存储,同时python中的列表设计非常到位,它可以实现内容动态扩充,可以进行后期数据的删除,这些就需要通过Python提供的列表操作函数来实现了. 对于Python语言而言,开发 ...
- python列表元素零的移动_python列表多行
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 这个列表推导式共有145列: memberdef_list = and std: ...
最新文章
- 预定义的类型“Microsoft.CSharp.RuntimeBinder.Binder”未定义或未导入
- C++继承和派生简明教程
- xib 设置阴影_使用“IBInspectable”XIB设置圆角、边框、阴影
- Linux中cut命令的使用
- xs128 双定时器PIT0和PIT1
- NC51189 Mondriaan‘s Dream
- UOJ #150 【NOIP2015】 运输计划
- [IDL入门] 两个PPT,IDL上手
- UVa 706 ZOJ 1146 LC-Display
- 判断显卡好坏的步骤、新买显卡装机后不亮解决
- 关于整型和浮点型的输出问题
- 日新测试软件,禁Ping多线程批量检测工具V2.6,功能强大,你值得拥有【2020.05.09日更新】...
- 泛微服务器运维监控,泛微协同平台E-cology8后台维护手册-流程引擎(261页)-原创力文档...
- 管理理论模型:PEST、5W2H、时间管理、生命周期、逻辑树、金字塔、SMART原则
- 2月28日 赵神牛打BOSS
- crypto 抄错的字符
- CPU/寄存器/内存
- Java synchronized偏向锁后hashcode存在哪里?
- 基于SpringBoot的便捷网住宿预约系统的设计与实现
- 设置--锁定屏幕--开启始终显示时间和信息,灭屏后不能点亮屏幕
热门文章
- 曾几何时,我们炼的不是丹,是特征
- 互联网1分钟 | 0214 2018 年超1/3的婚姻由约会交友类App促成;刘强东新开设 “南京京东云计算有限公司”...
- 喜大普奔,网易猪肉要到你碗里来了!
- centos7安装docker并配置阿里云镜像
- 深入理解springMVC
- CentOS7 安装并使用Ovirt 4.2
- ecshop百度编辑器远程下载无后缀的图片,并且加水印
- Mockito对final类型和方法的支持(三):免配置的inline mock making
- Linux中mod相关的命令 内核模块化 mod相关命令都是用来动态加载内核模块/驱动程序模块...
- How to install MinGW-w64 and MSYS2?