python基础(六):列表的使用(下)
列表排序的三种方式
sort()方法:原地修改列表的排序方法
- 注 1:“ 默认是升序” ,参数 reverse=True,表示将列表降序。
- 注 2:“ 原地修改列表” ,不建立新列表的排序方法。意思就是说:排序前后,列表存储地址不会变, 使用 id 函数,查看前后列表地址。
- 注 3:a.sort 不能用一个新的变量去接收,因为列表前后地址没变,是在原地修改列表。所以不可能用新的变量接收。append也是类似用法,不能用新的变量去接收。
>>> a = [20,10,40,30]
>>> print(id(a))
51969480
>>> a.sort()
>>> print(a)
[10, 20, 30, 40]
>>> print(id(a))
51969480
>>> b = [5,2,3,1,5,4]
>>> b.sort(reverse=True) #降序
>>> b
[5, 5, 4, 3, 2, 1]
sorted()方法:建立新列表的排序方法
- 注 1:sorted 方法,属于内置函数。而不属于列表的方法。因此是:sorted(a)而不是 a.sorted()。
- 注 2:sorted 方法, 重新建立新列表的排序,排序不是对本列表的排序,本列表并不会变,而是将排序后的列表存放在其他地址中。因此“可以用新变量接收” 。
- 注 3:“ 默认是升序” , 参数 reverse=True,表示将列表降序。
>>> c = [20,10,40,30]
>>> print(id(c))
52034312
>>> d = sorted(c)
>>> print(d)
[10, 20, 30, 40]
>>> print(id(d))34
52033992
>>> e = [5,2,3,1,5,4]
>>> f = sorted(e,reverse=True)
>>> f
[5, 5, 4, 3, 2, 1]
reverse():列表反转,不排序
>>> x = [1,4,2,3,5]
>>> x.reverse()
>>> x
[5, 3, 2, 4, 1]
列表遍历、列表嵌套
列表遍历
遍历列表, for 循环比 while 循环更好。

列表嵌套

列表推导式
列表推导式,在日常编程中发挥着很重要的作用(尤其是利用python做数据清洗的时候),它能够简化我们的代码,极其好用,我这里将它的常见3种用法给大家总结一下。
一般形式
语法格式:[ expression for i in iterable ]
x = [1, 3, 5, 7, 9]
y = [i**2 for i in x]
print(y)
结果如下:

带if的列表解析式
语法:[ expression for i in iterable if…]
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [i for i in x if i % 2 == 0]
print(y)
结果如下:

带if...else...的列表解析式
语法:[ expression if...else... for i in iterable]
x = [1, 2, 3, 4, 5, 6]
y = ["我是偶数" if i % 2 == 0 else "我是奇数" for i in x]
print(y)
结果如下:

列表赋值、浅拷贝、深拷贝
赋值

演示如下:
>>> li = [1,2,3]
>>> li2 = li
>>> id(li) == id(li2)
True
>>> li2[0] = 100
>>> li
[100, 2, 3]
浅拷贝
list(列表)的 copy 方法,实现的是浅拷贝。仅仅拷贝当前对象,而不会拷贝当前对象内部所关联的对象

演示如下:
>>> li = [1,2,3]
>>> li2 = li.copy()
>>> id(li) == id(li2)
False
>>> li2[0] = 100
>>> li2
[100, 2, 3]
>>> li
[1, 2, 3]
深拷贝
如果列表中元素是可变类型,此时,浅拷贝无法实现期望的效果。若期望 li2 的改变不影响li,我们可以采用“深拷贝”操作。“深拷贝”不仅拷贝当前对象本身,同时还会拷贝当前对 象,所关联的可变对象,一直拷贝到没有可变对象为止。

演示如下:
>>> import copy
>>> li = [[1,2],[3,4]]
>>> li2 = copy.copy(li)
>>> li2[0][0] = 666
>>> li
[[666, 2], [3, 4]]
>>> li2
[[666, 2], [3, 4]]
--------------------------------------
>>> li = [[1,2],[3,4]]
>>> li2 = copy.deepcopy(li)39
>>> li2[0][0] = 666
>>> li
[[1, 2], [3, 4]]
>>> li2
[[666, 2], [3, 4]]
列表中需要注意的地方
- 注 1:列表元素可以各不相同,可以是任意类型。
>>> lis = [1,2.0,False,"abc"]
>>> lis
[1, 2.0, False, 'abc']
- 注 2:列表大小可变,可以根据需要, 随时增加或者缩小列表。
- 注 3:‘ 字符串’ 与‘ 列表’ 都是‘ 序列类型’ ,只不过“ 字符串” 是字符序列,“ 列表” 是任何元素的序列。
python基础(六):列表的使用(下)的更多相关文章
- Python基础数据类型-列表(list)和元组(tuple)和集合(set)
Python基础数据类型-列表(list)和元组(tuple)和集合(set) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的 ...
- python基础数据类型--列表(list)
python基础数据类型--列表(list) 列表是我们在后面经常用到的数据类型之一,通过列表可以对数据类型进行增.删.改.查等操作 一列表的增.删.改.查 1增: 1.1增加到最后 append ...
- python基础之列表list元组tuple
作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7041763.html python基础之列表list元组tuple 列表li ...
- python基础之列表、字典、元祖等 (二)
一.作用域 if 1==1: name = 'weibinf' print name 下面的结论对吗? 外层变量,可以被内层变量使用 内层变量,无法被外层变量使用 二.三元运算 result = 值1 ...
- Day2 - Python基础2 列表、字典、集合
Python之路,Day2 - Python基础2 本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一, ...
- python基础4 列表和元组
一. 列表列表:python基础数据类型之一:其他语言中也有列表的概念,js 数组,可索引,可切片,可加步长li = ['hello', 100, True, [1, 2, 3], {'name':' ...
- Python基础入门-列表解析式
今天我们使用Python中的列表解析式来实现一些简单功能.好了关于列表解析式是什么?我的理解是它可以根据已有列表,高效创建新列表的方式.列表解析是Python迭代机制的一种应用,它常用于实现创建新的列 ...
- python基础之列表讲解
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现. 列表的数据项不需要具有相同的类型 如下图所示,创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可.(接下来的演 ...
- 【笔记】Python基础六:模块module介绍及常用模块
一,module模块和包的介绍 1,在Python中,一个.py文件就称之为一个模块(Module). 2,使用模块的好处? 最大的好处是大大提高了代码的可维护性 其次,编写代码不必从零开始,我们编写 ...
- python基础六
模块 1.定义: 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件(文件名:test.py,对应的模块名:test) 包:用来从逻辑上 ...
随机推荐
- modal 弹框遮罩层,滚动穿透bug 解决方案
modal 弹框遮罩层,滚动穿透bug 解决方案 parent component 动态设置 lock css const computedClassName = classNames( 'activ ...
- js jsonParse
mdn const rx_one = /^[\],:{}\s]*$/; const rx_two = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g; // 匹配 ...
- 谷歌地球服务器"失联"的替代方案
2020年11月下旬,谷歌地球开始无法连接.作为谷歌地球的替代方案,推荐使用国产软件"图新地球LSV".网址 http://www.tuxingis.com 下载"图新地 ...
- ElasticSearch 中的 Mapping
公号:码农充电站pro 主页:https://codeshellme.github.io 1,ES 中的 Mapping ES 中的 Mapping 相当于传统数据库中的表定义,它有以下作用: 定义索 ...
- CentOS7安装Kafka2.6.0
1:下载 wget https://mirror.bit.edu.cn/apache/kafka/2.6.0/kafka_2.12-2.6.0.tgz 点击前往官网 2:解压 tar -zxvf ka ...
- 优化程序性能(CSAPP)
[前言]虽然现在没有接触过大型项目,但是工作了会注重性能.学习一下,应该能更好更快的理解别人写的经典优化的代码.结合CSAPP和自己的理解,总结一下. 一.程序优化综述 1.高效程序的特点 (1)适当 ...
- vscode中js文件使用typescript语法报错,如何解决
原因:由于vcode自身的语法检查有些问题 解决办法:在设置里面加上 "javascript.validate.enable": false 禁用默认的 js 验证 总结: 由于v ...
- SpringBoot项目创建与单元测试
前言 Spring Boot 设计之初就是为了用最少的配置,以最快的速度来启动和运行 Spring 项目.Spring Boot使用特定的配置来构建生产就绪型的项目. Hello World 可以 ...
- 对话对话每日互动CEO方毅:数据智能应用的过去、现在和未来每日互动CEO方毅:数据智能应用的过去、现在和未来
2008年,大数据的概念被首次提出,麦肯锡全球研究所给出的定义是:大数据是在一种获取.存储.管理.分析方面大大超出了传统数据库软件工具能力范围的数据集合. 2014年,"数据智能" ...
- beego框架panic: 'GetSecurityInf' method doesn't exist in the controller CorporateInfcontroller问题解决
在使用beego框架时,出现类似于panic: 'GetSecurityInf' method doesn't exist in the controller CorporateInfcontroll ...