当前位置:
首页 > Python基础教程 >
-
python序列(八)列表推导式实列
1.列表推导式列表推导能非常简洁的构成一个新列表:只用一条简洁的表达式即可对得到的元素进行转换变形。
格式:[表达式 for 变量 in 列表]或[表达式 for 变量 in 列表 if 条件]
过滤条件可有可无,取决于实际应用,只留下表达式
>>> list =[x*x for x in range(10)]
相当于
>>> alist= []
>>> for x in range(10):
也相当于
>>> list= list(map(lambda x:x*x,range(10)))
2.阿凡提与国王比赛下棋,国王说要是izji输了的话阿凡提想要什么他都可以拿的出来。阿凡提说那就要点米吧,棋盘一共64个小格子,在第三个格子里放四粒米,第四个格子里放8粒米,以此类推,后面每个格子里的米都是前一个格子里的2倍,一直把64个格子都放满。需要多少粒米?
>>> sum([2**i for i in range(64)])
18446744073709551615
3.使用列表推导式实现嵌套列表的平铺
>>> vec=[[1,2,3],[4,5,6],[7,8,9]]
>>> [num for elem in vec for num in elem]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
相当于
>>> vec=[[1,2,3],[4,5,6],[7,8,9]]
>>> result =[]
>>> for elem in vec:
for num in elem:
result.append(num)
>>> result
[1,2,3,4,5,6,7,8,9]
4,如果不使用列表推导式,可以这样做。
>>> vec=[[1,2,3],[4,5,6],[7,8,9]] >>> sum(vec,[]) [1, 2, 3, 4, 5, 6, 7, 8, 9] 或 >>> vec=[[1,2,3],[4,5,6],[7,8,9]] >>> from itertools import chain >>> list(chain(*vec)) [1, 2, 3, 4, 5, 6, 7, 8, 9]
5.列出当前文件夹下所有python源文件
>>> import os >>> [filename for filename in os.listdir('.')if filename.endswith(('.py','.pyw'))] 过滤不符合条件的元素 >>> list = [-1,-4,6,7,5,-2,3,9,-11] >>> >>> [i for i in list if i>0] [6, 7, 5, 3, 9]
6.已知有一个包含一些同学成绩的字典,计算成绩的最高分、最低分、平均分,并查找所有最高分同学。
>>> scores={"zhangsan":45,"lisi":78,"wangwu":40,"zhouliu":96,"zhaoqi":65,"sunba":90,"zhengjiu":78,"wushi":99,"dongshiyi":60}
>>> heighest=max(scores.values())
>>> lowest = min(scores.values())>>> average=sum(scores.values())*1.0/len(scores)
>>> heighest,lowest,average
(99, 40, 72.33333333333333)
>>> heighestPerson=[name for name,score in scores.items()if score == heighest]
>>> heighestPerson
['wushi']
7.在列表推导式中使用多个循环,实现多序列元素组合,并且可以结合条件语句过滤特定元素
>>> [(x,y)for x in range(3) for y in range(2)]
[(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1)]
>>> [(x,y) for x in [1,2,3]for y in [3,1,4]if x!=y]
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式