列表复制

浅拷贝:简单类型元素全复制,引用类型元素只复制引用

  1. L1 = [3,2,1,[4,5,6],8,'abc']
  2. L1
  3. [3, 2, 1, [4, 5, 6], 8, 'abc']
  4.  
  5. L2 = L1.copy()
  6. L2
  7. [3, 2, 1, [4, 5, 6], 8, 'abc']
  1. L1[3][1] = 10 #修改L1中的元素L2也随之变化
  2. L1
  3. [3, 2, 1, [4, 10, 6], 8, 'abc']
  4. L2
  5. [3, 2, 1, [4, 10, 6], 8, 'abc']

深拷贝:copy模块提供了deepcopy,引用类型完全复制为新元素

  1. import copy
  2. L3 = copy.deepcopy(L1)
  3. L3
  4. [3, 2, 1, [4, 10, 6], 8, 'abc']
  1. L1[3][1] = 20
  2. L1
  3. [3, 2, 1, [4, 20, 6], 8, 'abc']
  4. L3 #L3为深拷贝新生成的列表,修改L1元素对L3无影响
  5. [3, 2, 1, [4, 10, 6], 8, 'abc']

*:对引用类型做浅拷贝处理

  1. L4 = [[1,2,3]] * 3
  2. L4
  3. [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
  4.  
  5. L4[1][1] = 10
  6. L4
  7. [[1, 10, 3], [1, 10, 3], [1, 10, 3]]
  1. for x in L4:
  2. print(x)
  3. print(id(x)) #取内存地址
  4. [1, 10, 3]
  5. 84289032
  6. [1, 10, 3]
  7. 84289032
  8. [1, 10, 3]
  9. 84289032 #内存地址相同
  1. L5 = [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
  2. L5
  3. [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
  4.  
  5. for x in L5:
  6. print(x)
  7. print(id(x))
  8. [1, 2, 3]
  9. 87157000
  10. [1, 2, 3]
  11. 84213512
  12. [1, 2, 3]
  13. 87157128

列表删除元素

remove(value) 基于元素查找,移除第一个出现的元素,并会引起列表元素移动O(n)

  1. L6 = [3,2,1,4,5,6,7,2,3,4]
  2. L6
  3. [3, 2, 1, 4, 5, 6, 7, 2, 3, 4]
  4.  
  5. L6.remove(2)
  6. L6
  7. [3, 1, 4, 5, 6, 7, 2, 3, 4]
  8.  
  9. L6.remove(10)
  10. ---------------------------------------------------------------------------
  11. ValueError Traceback (most recent call last)
  12. <ipython-input-31-8cf95df45268> in <module>
  13. ----> 1 L6.remove(10)
  14.  
  15. ValueError: list.remove(x): x not in list

pop(index) 基于索引查找,移除索引位元素O(1),并会引起列表元素移动O(n)

  1. L6.pop(3)
    5
  2. L6
  3. [3, 1, 4, 6, 7, 2, 3, 4]
  4.  
  5. L6.pop(10)
  6. L6
  7. ---------------------------------------------------------------------------
  8. IndexError Traceback (most recent call last)
  9. <ipython-input-33-8663c8410c3d> in <module>
  10. ----> 1 L6.pop(10)
  11. 2 L6
  12.  
  13. IndexError: pop index out of range

pop() 移除列表尾部一个元素O(1),效率高

  1. L6.pop()
    4
  2. L6
  3. [3, 1, 4, 6, 7, 2, 3]

clear() 清除列表所有元素,使列表长度为0,元素引用计数减1,剩下一个空列表

  1. L6.clear()
  2. L6
  3. []

列表翻转

reverse() 将列表元素反转,修改自身

  1. L7 = [3,2,1,4,5,6,7,2,3,4]
  2. L7
  3. [3, 2, 1, 4, 5, 6, 7, 2, 3, 4]
  4.  
  5. L7.reverse()
  6. L7
  7. [4, 3, 2, 7, 6, 5, 4, 1, 2, 3]

列表排序

sort(key=function,reverse=True) 对列表元素排序,默认升序,修改自身

key指定不同类型元素如何排序,只在排序中使用,不修改元素

reverse=True为降序排序

  1. L8 = [3,2,1,4,5,6,7,2,3,4,'a','b','c']
  2. L8
  3. [3, 2, 1, 4, 5, 6, 7, 2, 3, 4, 'a', 'b', 'c']
  4.  
  5. L8.sort()
  6. ---------------------------------------------------------------------------
  7. TypeError Traceback (most recent call last)
  8. <ipython-input-46-951f259be954> in <module>
  9. ----> 1 L8.sort()
  10.  
  11. TypeError: '<' not supported between instances of 'str' and 'int'
  12.  
  13. L8.sort(key=str,reverse=True)
  14. L8
  15. ['c', 'b', 'a', 7, 6, 5, 4, 4, 3, 3, 2, 2, 1]

判断元素存在

in 判断元素在列表中是否存在,返回bool值

  1. 'c' in L8
  2. True
  3. 4 in L8
  4. True
  5. 10 in L8
  6. False

Python列表操作与深浅拷贝(7)——列表深浅拷贝、删除、反转、排序的更多相关文章

  1. Python列表操作与深浅拷贝(6)——列表索引、查询、修改、扩展

    列表list定义 L1 = [] L2 = [1,2,'abc'] L3 = list() L4 = list(range(5)) L5 = [1,'abc',True,None,[4,5,'abc' ...

  2. Python列表操作与深浅拷贝(5)——数字处理函数、类型判断、列表链表队列栈

    python内建数据结构 分类 数值型: int float complex bool 序列对象: 字符串str 列表list 元组tuple 键值对: 集合set 字典dict 数值型 (list ...

  3. python---基础知识回顾(一)(引用计数,深浅拷贝,列表推导式,lambda表达式,命名空间,函数参数逆收集,内置函数,hasattr...)

    一:列表和元组(引用计数了解,深浅拷贝了解) 序列:序列是一种数据结构,对其中的元素按顺序进行了编号(从0开始).典型的序列包括了列表,字符串,和元组 列表是可变的(可以进行修改),而元组和字符串是不 ...

  4. Python中的列表操作

    Python的列表操作可谓是功能强大且方便(相对于Java)简单.常规的操作就不说了(这不是一个入门教程),介绍几个很有特点的例子 添加 # 追加到结尾(append) li = [1, 2, 3, ...

  5. Python列表操作集合

    对于python列表里元素的操作主要分为以下几个方面: 1.向列表里面加元素: 向python列表里面添加元素主要有三种方法: (1)append() append()对于列表的操作主要实现的是在特定 ...

  6. Python列表操作大全(非常全)

    Python列表操作大全(非常全!!!) 对于python列表的理解可以和C语言里面的数组进行比较性的记忆与对照,它们比较相似,对于python里面列表的定义可以直接用方括号里加所包含对象的方法,并且 ...

  7. 【Python】Python中的列表操作

    Python的列表操作可谓是功能强大且方便(相对于Java)简单.常规的操作就不说了(这不是一个入门教程),介绍几个很有特点的例子 添加 # 追加到结尾(append) li = [1, 2, 3, ...

  8. python列表操作大全

    Python列表操作大全 对于python列表的理解可以和C语言里面的数组进行比较性的记忆与对照,它们比较相似,对于python里面列表的定义可以直接用方括号里加所包含对象的方法,并且python的列 ...

  9. Python学习总结3:元组、列表的操作汇总

    参考博客:http://www.cnblogs.com/QG-whz/p/4782809.html 1. 是否可变 元组:用()或tuple函数定义,不可变(元素的值以及整个元组): 列表:用 [] ...

  10. Python基础学习笔记(六)常用列表操作函数和方法

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-lists.html 3. http://www.liaoxuef ...

随机推荐

  1. 【cf1111】C. Creative Snap (dfs+dp)

    传送门 简单的dfs+dp即可解决.根本不用动态开点 /* * Author: heyuhhh * Created Time: 2019/11/13 10:12:42 */ #include < ...

  2. alertmanager

    alertmanager主要用于接收prometheus发送的告警信息: wget下载,解压, 配置alertmanager.yml,内容如下: 在prometheus文件下添加rules.yml内容 ...

  3. gn-build

    I'm not completely sure from the error you describe but it sounds like you don't have a .gn file in ...

  4. UVA10559 方块消除 Blocks(区间dp)

    一道区间dp好题,在GZY的ppt里,同时在洛谷题解里看见了Itst orz. 题目大意 有n个带有颜色的方块,没消除一段长度为 \(x\) 的连续的相同颜色的方块可以得到 \(x^2\) 的分数,用 ...

  5. Java:String,int相互转化

    int转String int a: a + “”    String.valueOf(a)    Interger.toString(a)    一般使用以上几种方法进行转化 第一种方法效率不好,ja ...

  6. (day48)Bootstrap、Adminlte框架、sweetalert

    目录 Bootstrap框架官网 Adminlte框架官网 sweetalert 一.基础 二.布局 三.组件 四.插件 Bootstrap框架官网 Adminlte框架官网 sweetalert g ...

  7. 第九周周五计划&&周四总结

    今天主要将提取地主题词入库以及重新对新闻分类. 测试了一下单纯使用主题词作为主题追踪依据不是很好,明天尝试使用特征值提取(主题词(名词实体))+摘要比对综合.但是目前还没想好是每篇新闻的都要追踪还是热 ...

  8. 使用CMD命令部署.NetCore程序到IIS

    dotnet restore cd src\XXXXX md publish dotnet publish -o publish cd publish set siteFilePath=%cd% se ...

  9. eclipse maven项目如何将所有的jar包复制到lib目录下?

      1.情景展示 我们知道,maven项目的jar包并不存在于项目当中,项目所需的jar包都保存在本地仓库中,如果本地仓库没有,会从配置的中央仓库下载,如果中央仓库也没有就会报错: 如上图所示,我想将 ...

  10. win10 配置python3虚拟环境

    1.安装virtualenv pip install virtaulenv 2.创建虚拟环境 env03 virtualenv env03 3.切换到进入虚拟换环境脚本目录(activate) cd ...