一、Python中的推导式

推导式comprehension,可以从一个数据序列构建另一个新的数据序列的结构体。

  • 列表推导式
  • 集合推导式
  • 字典推导式

二、列表推导式

作用:用一个表达式创建一个有规律的列表或控制一个有规律列表,可以简化代码

需求:创建一个0~1的列表
1、while循环实现

# 准备一个空列表
list = []# 书写循环,依次追加数字到空列表中
i = 0
while i < 10:list.append(i)i += 1
print(list)

2、for循环实现

# 准备一个空列表
ls = []# 书写循环,依次追加数字到空列表中
for i in range(10):list.append(i)i += 1
print(ls)

3、推导式实现

ls = [i for i in range(10)]  # 此处for与for循环相同, for 左侧写返回值
print(ls)

代码大大简化

三、带if的列表推导式

需求:0~10之间的偶数列表

ls = []
for i in range(10):if i % 2 == 0:ls.append(i)
print(ls)
# 一般的列表推导式
ls = [i for i in range(0, 10, 2)]
print(ls)# 带if的列表推导式
ls2 = [i for i in range(10) if i % 2 == 0]
print(ls2)输出:
[0, 2, 4, 6, 8]
[0, 2, 4, 6, 8]

四、多个for循环实现列表推导式

需求:创建如下列表:[(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

ls = []
for i in range(1, 3):for j in range(3):ls.append((i, j))
print(ls)ls2 = [(i, j) for i in range(1, 3) for j in range(3)]
print(ls2)输出:
[(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
[(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

三、集合推导式

集合有去重。

# 创建一个集合,数据为下述列表的平方
ls = [1, 1, 2, 3]s = {i ** 2 for i in ls}
print(s)输出;{1, 4, 9}

四、字典推导式

字典推导式作用:快速合并list为dict,或提取字典中的目标数据

# 创建一个字典:字典key是1~5数字,value是这个数字的平方
d = {i:i**2 for i in range(1, 5)}
print(d)输出:
{1: 1, 2: 4, 3: 9, 4: 16}

情形1. 两个列表元素数量相同,统计任何一个list长度都可以
(list后期有可能变化,所以不用具体数目,用len)

# 将列表ls1,ls2合并为一个字典
ls1 = ["name", "age", "gender"]
ls2 = ["Tom", 20, "male"]d2 = {ls1[i]:ls2[i] for i in range(len(ls1))}
d3 = {ls1[i]:ls2[i] for i in range(len(ls2))}
print(d2)输出:
{'name': 'Tom', 'age': 20, 'gender': 'male'}
{'name': 'Tom', 'age': 20, 'gender': 'male'}

情形2. 两个列表元素数量不同,len统计元素多的,dict会报错
(list后期有可能变化,所以不用具体数目,用len)

# 将列表ls1,ls2合并为一个字典
ls1 = ["name", "age", "gender", "id"]
ls2 = ["Tom", 20, "male"]d2 = {ls1[i]:ls2[i] for i in range(len(ls1))}
print(d2)
输出:IndexError: list index out of ranged3 = {ls1[i]:ls2[i] for i in range(len(ls2))}
print(d3)
输出:{'name': 'Tom', 'age': 20, 'gender': 'male'}

情形3. 快速提取目标数据

counts = {"a": 10, "b": 35, "c": 89, "d": 42}
# 需求:提取上述abcd中,分数大于40的数据d = {k:v for k, v in counts.items() if v >= 40}
print(d)输出:{'c': 89, 'd': 42}

五、小结

作用:简化代码
列表推导式作用:创建一个有规律的列表或控制一个有规律列表
集合推导式作用:创建一个有规律的集合或控制一个有规律集合,同时去重
字典推导式作用:快速合并list为dict,或提取字典中的目标数据

推导式写法:

# 列表推导式
[xx for xx in range()]
# 集合推导式
{xx for ... in...}
# 字典推导式
{xx1:xx2 for ... in...}

PS: source, bilibili

Python推导式comprehension:列表推导式、集合推导式、字典推导式相关推荐

  1. Python入门 [输出,注释,列表,元祖,集合,字典,if,while,for]

    print("Hello Python") #输出 ''' 多行注释 用 三个引号 ''' a=1 #赋值 变量首字母只能书字母下划线 第二个字符数字,字母,下划线 声明一个列表 ...

  2. Python语法糖之:列表解析、集合解析和字典解析

    ☆ NGS系列文章包括NGS基础.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流程).单细胞测序分析 (重磅综述:三万字长 ...

  3. python反转列表解析_Python语法糖之:列表解析、集合解析和字典解析

    ☆ Python的列表解析 (list comprehensions)是在Python 2.0以来一直都有的功能,特别简洁.实用.而字典解析虽然曾经在Python 2.3版本中引入过,但后来因为与di ...

  4. python语法糖的本质_科学网—Python语法糖之:列表解析、集合解析和字典解析 - 陈同的博文...

    Python的列表解析 (list comprehensions)是在Python 2.0以来一直都有的功能,特别简洁.实用.而字典解析虽然曾经在Python 2.3版本中引入过,但后来因为与dict ...

  5. Python第五、六种数据类型——Set(集合) and Dictionary(字典)

    目录 一. Set(集合) 1.集合的定义 2.添加元素 3.集合运算 (1)交集 (2)并集 (3)差集 二. Dictionoary(字典) 1.字典的定义 2.提取字典中的所有 key 值 3. ...

  6. 1、列表推导式、字典推导式

    """ 1.列表推导式:     作用:快速生成列表          需求1:如何快速生成一个["data0","data1", ...

  7. 字典推导式_聊一聊:python的各种推导式(列表推导式、字典推导式、集合推导式)...

    作者:苍松 原文:https://www.cnblogs.com/tkqasn/p/5977653.html 推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可 ...

  8. Python基础教程:列表、字典、集合推导式

    下面是一个以列表推导式为例的推导式详细格式,同样适用于其他推导式. variable = [out_exp_res for out_exp in input_list if out_exp == 2] ...

  9. python列表推导式_聊一聊:python的各种推导式(列表推导式、字典推导式、集合推导式)...

    作者:苍松 原文:https://www.cnblogs.com/tkqasn/p/5977653.html 推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可 ...

最新文章

  1. js 实现精确加减乘除运算之BigDecimal.js
  2. mysq 开启慢查询日志
  3. js调用ios和安卓方法
  4. Linux 常用检测命令
  5. python requests
  6. 在weka中配置自己的算法 zz
  7. HDU4367(线段相交与斐波那契数列)
  8. 如何在eclipse中对项目进行重新编译
  9. 虚拟化记录--No.1
  10. Linux桌面需要强制访问控制,RHCSA 系列(十三): 在 RHEL 7 中使用 SELinux 进行强制访问控制...
  11. 我在深圳,但是家里托人在老家找了一份工作
  12. mysql 动态创建事件_mysql 通过事件定时为数据库创建动态表名
  13. 【B/S】java(4)
  14. 【前端】js代码模拟用户键盘鼠标输入
  15. Java一步到位!彻底了解JDK、JRE、JVM分别是什么及它们之间的联系
  16. 小米开源便签Notes-源码研究(0)-整体功能介绍(图文并茂)
  17. python语言由psf组织所有、这是一个商业组织_智慧职教云课堂APP店长实务答案搜题公众号...
  18. Linux检测ip变动
  19. 视频拍摄技巧——构图
  20. computed,watch

热门文章

  1. licode学习之erizo篇--Pipeline_service
  2. [No0000FD]C# 正则表达式
  3. AngularJS之页面跳转Route
  4. Gstreamer的一些基本概念与A/V同步分析
  5. 关于 JQuery 的克隆
  6. jcifs java_通过jcifs实现java访问网络共享文件
  7. 数字通信同步技术的matlab与fpga实现_数字通信电缆行业规模情况及趋势分析(附报告目录)...
  8. 流行前沿的暗黑APP主题UI设计素材模板
  9. UI设计师收好!哪些会说故事的插画素材!
  10. 超炫彩光效数码产品线条感海报PSD分层模板,炫亮抓你眼球