Python列表操作与深浅拷贝(7)——列表深浅拷贝、删除、反转、排序
列表复制
浅拷贝:简单类型元素全复制,引用类型元素只复制引用
- L1 = [3,2,1,[4,5,6],8,'abc']
- L1
- [3, 2, 1, [4, 5, 6], 8, 'abc']
- L2 = L1.copy()
- L2
- [3, 2, 1, [4, 5, 6], 8, 'abc']
- L1[3][1] = 10 #修改L1中的元素L2也随之变化
- L1
- [3, 2, 1, [4, 10, 6], 8, 'abc']
- L2
- [3, 2, 1, [4, 10, 6], 8, 'abc']
深拷贝:copy模块提供了deepcopy,引用类型完全复制为新元素
- import copy
- L3 = copy.deepcopy(L1)
- L3
- [3, 2, 1, [4, 10, 6], 8, 'abc']
- L1[3][1] = 20
- L1
- [3, 2, 1, [4, 20, 6], 8, 'abc']
- L3 #L3为深拷贝新生成的列表,修改L1元素对L3无影响
- [3, 2, 1, [4, 10, 6], 8, 'abc']
*:对引用类型做浅拷贝处理
- L4 = [[1,2,3]] * 3
- L4
- [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
- L4[1][1] = 10
- L4
- [[1, 10, 3], [1, 10, 3], [1, 10, 3]]
- for x in L4:
- print(x)
- print(id(x)) #取内存地址
- [1, 10, 3]
- 84289032
- [1, 10, 3]
- 84289032
- [1, 10, 3]
- 84289032 #内存地址相同
- L5 = [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
- L5
- [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
- for x in L5:
- print(x)
- print(id(x))
- [1, 2, 3]
- 87157000
- [1, 2, 3]
- 84213512
- [1, 2, 3]
- 87157128
列表删除元素
remove(value) 基于元素查找,移除第一个出现的元素,并会引起列表元素移动O(n)
- L6 = [3,2,1,4,5,6,7,2,3,4]
- L6
- [3, 2, 1, 4, 5, 6, 7, 2, 3, 4]
- L6.remove(2)
- L6
- [3, 1, 4, 5, 6, 7, 2, 3, 4]
- L6.remove(10)
- ---------------------------------------------------------------------------
- ValueError Traceback (most recent call last)
- <ipython-input-31-8cf95df45268> in <module>
- ----> 1 L6.remove(10)
- ValueError: list.remove(x): x not in list
pop(index) 基于索引查找,移除索引位元素O(1),并会引起列表元素移动O(n)
- L6.pop(3)
5- L6
- [3, 1, 4, 6, 7, 2, 3, 4]
- L6.pop(10)
- L6
- ---------------------------------------------------------------------------
- IndexError Traceback (most recent call last)
- <ipython-input-33-8663c8410c3d> in <module>
- ----> 1 L6.pop(10)
- 2 L6
- IndexError: pop index out of range
pop() 移除列表尾部一个元素O(1),效率高
- L6.pop()
4- L6
- [3, 1, 4, 6, 7, 2, 3]
clear() 清除列表所有元素,使列表长度为0,元素引用计数减1,剩下一个空列表
- L6.clear()
- L6
- []
列表翻转
reverse() 将列表元素反转,修改自身
- L7 = [3,2,1,4,5,6,7,2,3,4]
- L7
- [3, 2, 1, 4, 5, 6, 7, 2, 3, 4]
- L7.reverse()
- L7
- [4, 3, 2, 7, 6, 5, 4, 1, 2, 3]
列表排序
sort(key=function,reverse=True) 对列表元素排序,默认升序,修改自身
key指定不同类型元素如何排序,只在排序中使用,不修改元素
reverse=True为降序排序
- L8 = [3,2,1,4,5,6,7,2,3,4,'a','b','c']
- L8
- [3, 2, 1, 4, 5, 6, 7, 2, 3, 4, 'a', 'b', 'c']
- L8.sort()
- ---------------------------------------------------------------------------
- TypeError Traceback (most recent call last)
- <ipython-input-46-951f259be954> in <module>
- ----> 1 L8.sort()
- TypeError: '<' not supported between instances of 'str' and 'int'
- L8.sort(key=str,reverse=True)
- L8
- ['c', 'b', 'a', 7, 6, 5, 4, 4, 3, 3, 2, 2, 1]
判断元素存在
in 判断元素在列表中是否存在,返回bool值
- 'c' in L8
- True
- 4 in L8
- True
- 10 in L8
- False
Python列表操作与深浅拷贝(7)——列表深浅拷贝、删除、反转、排序的更多相关文章
- Python列表操作与深浅拷贝(6)——列表索引、查询、修改、扩展
列表list定义 L1 = [] L2 = [1,2,'abc'] L3 = list() L4 = list(range(5)) L5 = [1,'abc',True,None,[4,5,'abc' ...
- Python列表操作与深浅拷贝(5)——数字处理函数、类型判断、列表链表队列栈
python内建数据结构 分类 数值型: int float complex bool 序列对象: 字符串str 列表list 元组tuple 键值对: 集合set 字典dict 数值型 (list ...
- python---基础知识回顾(一)(引用计数,深浅拷贝,列表推导式,lambda表达式,命名空间,函数参数逆收集,内置函数,hasattr...)
一:列表和元组(引用计数了解,深浅拷贝了解) 序列:序列是一种数据结构,对其中的元素按顺序进行了编号(从0开始).典型的序列包括了列表,字符串,和元组 列表是可变的(可以进行修改),而元组和字符串是不 ...
- Python中的列表操作
Python的列表操作可谓是功能强大且方便(相对于Java)简单.常规的操作就不说了(这不是一个入门教程),介绍几个很有特点的例子 添加 # 追加到结尾(append) li = [1, 2, 3, ...
- Python列表操作集合
对于python列表里元素的操作主要分为以下几个方面: 1.向列表里面加元素: 向python列表里面添加元素主要有三种方法: (1)append() append()对于列表的操作主要实现的是在特定 ...
- Python列表操作大全(非常全)
Python列表操作大全(非常全!!!) 对于python列表的理解可以和C语言里面的数组进行比较性的记忆与对照,它们比较相似,对于python里面列表的定义可以直接用方括号里加所包含对象的方法,并且 ...
- 【Python】Python中的列表操作
Python的列表操作可谓是功能强大且方便(相对于Java)简单.常规的操作就不说了(这不是一个入门教程),介绍几个很有特点的例子 添加 # 追加到结尾(append) li = [1, 2, 3, ...
- python列表操作大全
Python列表操作大全 对于python列表的理解可以和C语言里面的数组进行比较性的记忆与对照,它们比较相似,对于python里面列表的定义可以直接用方括号里加所包含对象的方法,并且python的列 ...
- Python学习总结3:元组、列表的操作汇总
参考博客:http://www.cnblogs.com/QG-whz/p/4782809.html 1. 是否可变 元组:用()或tuple函数定义,不可变(元素的值以及整个元组): 列表:用 [] ...
- Python基础学习笔记(六)常用列表操作函数和方法
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-lists.html 3. http://www.liaoxuef ...
随机推荐
- 【cf1111】C. Creative Snap (dfs+dp)
传送门 简单的dfs+dp即可解决.根本不用动态开点 /* * Author: heyuhhh * Created Time: 2019/11/13 10:12:42 */ #include < ...
- alertmanager
alertmanager主要用于接收prometheus发送的告警信息: wget下载,解压, 配置alertmanager.yml,内容如下: 在prometheus文件下添加rules.yml内容 ...
- gn-build
I'm not completely sure from the error you describe but it sounds like you don't have a .gn file in ...
- UVA10559 方块消除 Blocks(区间dp)
一道区间dp好题,在GZY的ppt里,同时在洛谷题解里看见了Itst orz. 题目大意 有n个带有颜色的方块,没消除一段长度为 \(x\) 的连续的相同颜色的方块可以得到 \(x^2\) 的分数,用 ...
- Java:String,int相互转化
int转String int a: a + “” String.valueOf(a) Interger.toString(a) 一般使用以上几种方法进行转化 第一种方法效率不好,ja ...
- (day48)Bootstrap、Adminlte框架、sweetalert
目录 Bootstrap框架官网 Adminlte框架官网 sweetalert 一.基础 二.布局 三.组件 四.插件 Bootstrap框架官网 Adminlte框架官网 sweetalert g ...
- 第九周周五计划&&周四总结
今天主要将提取地主题词入库以及重新对新闻分类. 测试了一下单纯使用主题词作为主题追踪依据不是很好,明天尝试使用特征值提取(主题词(名词实体))+摘要比对综合.但是目前还没想好是每篇新闻的都要追踪还是热 ...
- 使用CMD命令部署.NetCore程序到IIS
dotnet restore cd src\XXXXX md publish dotnet publish -o publish cd publish set siteFilePath=%cd% se ...
- eclipse maven项目如何将所有的jar包复制到lib目录下?
1.情景展示 我们知道,maven项目的jar包并不存在于项目当中,项目所需的jar包都保存在本地仓库中,如果本地仓库没有,会从配置的中央仓库下载,如果中央仓库也没有就会报错: 如上图所示,我想将 ...
- win10 配置python3虚拟环境
1.安装virtualenv pip install virtaulenv 2.创建虚拟环境 env03 virtualenv env03 3.切换到进入虚拟换环境脚本目录(activate) cd ...