Python列表操作与深浅拷贝(7)——列表深浅拷贝、删除、反转、排序
时间:2019-09-30
本文章向大家介绍Python列表操作与深浅拷贝(7)——列表深浅拷贝、删除、反转、排序,主要包括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
原文地址:https://www.cnblogs.com/omgasw/p/11613085.html
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(47)-工作流设计-补充
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(46)-工作流设计-设计分支
- 瑞典研发未来概念车,车厢、底盘能分离,颠覆汽车使用方式
- WCF技术剖析之十一:异步操作在WCF中的应用(下篇)
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(45)-工作流设计-设计步骤
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(44)-工作流设计-设计表单
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(43)-工作流设计-字段分类设计
- 因为这个原因,你的工作即将被取代!
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(73)-微信公众平台开发-消息管理
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(72)-微信公众平台开发-消息处理
- 充斥着AI生成内容的世界,你能辨别虚拟与现实吗?
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(71)-微信公众平台开发-公众号管理
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(69)-微信公众平台开发-功能概述
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(68)-微信公众平台开发- 资源环境准备
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- linux中使用boost.python调用c++动态库的办法
- 在Linux系统下上传项目到码云的办法
- PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】 原创
- Linux(Ubuntu 18.04)上安装Anaconda步骤详解
- php web环境和命令行环境下查找php.ini的位置
- PHP大文件分块上传功能实例详解
- Linux 命令行通配符及转义符的实现
- Python爬虫抓取指定网页图片代码实例
- PHP变量作用域(全局变量&局部变量)&global&static关键字用法实例分析
- CentOS 7 安装Chrome浏览器的方法
- PHP高级编程之消息队列原理与实现方法详解
- thinkphp5.1框架模板布局与模板继承用法分析
- Linux内核设备驱动之内存管理笔记整理
- Matplotlib 绘制饼图解决文字重叠的方法
- Yii 实现数据加密和解密的示例代码