文章目录

  • 0、推导式
  • 一. 列表推导式
    • 1.1 快速体验
    • 1.2 带if的列表推导式
    • 1.3 多个for循环实现列表推导式
  • 二. 字典推导式
    • 2.1 快速体验
  • 三. 集合推导式
  • 四. 总结

0、推导式

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

一. 列表推导式

作用:用一个表达式创建一个有规律的列表或控制一个有规律列表。

列表推导式又叫列表生成式

1.1 快速体验

需求:创建一个0-10的列表。(包含0不包含10)

  • while循环实现
# 1. 准备一个空列表
list1 = []# 2. 书写循环,依次追加数字到空列表list1中
i = 0
while i < 10:list1.append(i)i += 1print(list1) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  • for循环实现
list1 = []
for i in range(10):list1.append(i)print(list1) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  • 列表推导式实现 ★
list1 = [i for i in range(10)]
print(list1) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  • 其实有个投机取巧的办法
l1 = list(range(10))
print(type(l1))
l1

1.2 带if的列表推导式

需求:创建0-10的偶数列表

  • 方法一:range()步长实现
l1 = [i for i in range(0,10,2)]
print(l1) # [0, 2, 4, 6, 8]
  • 方法二:if实现
l1 = [i for i in range(10) if i%2==0]
print(l1) # [0, 2, 4, 6, 8]

投机取巧

l1 = list(range(0,10,2))
l1

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

需求:创建列表如下:

[(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
list1 = [(i,j) for i in range(1,3) for j in range(3)]
print(list1)

二. 字典推导式

思考:如果有如下两个列表:

list1 = ['name', 'age', 'gender']
list2 = ['Tom', 20, 'man']

如何快速合并为一个字典?

答:字典推导式

字典推导式作用:快速合并列表为字典或提取字典中目标数据。

2.1 快速体验

  1. 创建一个字典:字典key是1-5数字,value是这个数字的2次方。
dict1 = {i: i**2 for i in range(1, 5)}
print(type(dict1)) # <class 'dict'>
print(dict1)  # {1: 1, 2: 4, 3: 9, 4: 16}
  1. 将两个列表合并为一个字典
list1 = ['name', 'age', 'gender']
list2 = ['Tom', 20, 'man']dict1 = {list1[i]:list2[i] for i in range(len(list1))} # 这么简单拐个弯儿都不会。。。
print(type(dict1)) # <class 'dict'>
print(dict1) # {'name': 'Tom', 'age': 20, 'gender': 'man'}
  1. 提取字典中目标数据
counts = {'MBP': 268, 'HP': 125, 'DELL': 201, 'Lenovo': 199, 'acer': 99}# 需求:提取上述电脑数量大于等于200的字典数据
count1 = { key : value for key,value in counts.items() if value >= 200 }
print(count1) # {'MBP': 268, 'DELL': 201}

我的做法比较慢×

counts = {'MBP': 268, 'HP': 125, 'DELL': 201, 'Lenovo': 199, 'acer': 99}# 需求:提取上述电脑数量大于等于200的字典数据
count1 = { name : counts[name] for name in counts.keys() if counts[name]>=200 }
print(count1) # {'MBP': 268, 'DELL': 201}

三. 集合推导式

需求:创建一个集合,数据为下方列表的2次方。

list1 = [1, 1, 2]

代码如下:

list1 = [1, 1, 2]
set1 = {i ** 2 for i in list1}
print(set1)  # {1, 4}

注意:集合有数据去重功能。

四. 总结

  • 推导式的作用:简化代码
  • 推导式写法
# 列表推导式
[xx for xx in range()]# 字典推导式
{xx1: xx2 for ... in ...}# 集合推导式
{xx for xx in ...}

Python推导式-[xx for xx in range() if xx]相关推荐

  1. python推导式pythonic必备

    编程规范 今天公司新出了一套Python编程规范2.0,一直觉得自己写代码路子有点野,所以仔细的看了下. 多数的内容在网上都能搜到,但有几点需要说说 让我觉得羞愧的注释率 公司要求代码注释行,占代码总 ...

  2. 【Python推导式】

    Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体. Python 支持各种数据结构的推导式: 列表(list)推导式 字典(dict)推导式 集合(set ...

  3. python列表推导式[x for x in range(n)]

    1.匿名函数 匿名函数语法形式: lambda [arg1,arg2,arg3,argn]:expression 注解: lambda 关键字 argi 函数参数 expression 程序逻辑,即函 ...

  4. Python推导式comprehension:列表推导式、集合推导式、字典推导式

    一.Python中的推导式 推导式comprehension,可以从一个数据序列构建另一个新的数据序列的结构体. 列表推导式 集合推导式 字典推导式 二.列表推导式 作用:用一个表达式创建一个有规律的 ...

  5. python 推导式_Python 入门之 推导式

    推导式就是构建比较有规律的列表,生成器,字典等一种简便的方式. 1.推导式 (1)列表推导式 <1> 普通循环: [变量 for循环] print([i for i in range(10 ...

  6. python同或符号_奇技淫巧,还是正统功夫? - Python推导式最全用法

    写一段代码生成1到100之间的数字的平方的列表,答案是:1,4,9,16... 如果你这样写,你就不Pythonic了:nums = []for i in range(1,101):    nums. ...

  7. Python 推导式(列表推导式,字典推导式,集合推导式)

    Python的各种推导式 推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的数据序列的结构体. 共有三种推导. 列表推导式 字典推 ...

  8. python 推导式练习题

    1.通过列表推导式完成下面数据类型转换. 将 ["{'a':11,'b':2}", "[11,22,33,44]"] 转换为以下格式: li1 = [{'a': ...

  9. Python 推导式 Comprehension

    各种推导式(comprehensions) 推导式(又称解析式)是Python的⼀种独有特性,如果我被迫离开了它,我会⾮常想念. 推导式是可以从⼀个数据序列构建另⼀个新的数据序列的结构体. 共有三种推 ...

最新文章

  1. 高并发下的接口幂等性解决方案
  2. 超级黑科技代码!Python打造电脑人脸屏幕解锁神器附带接头暗号
  3. Java Socket实现WebSocket服务器
  4. LeetCode03:无重复字符的最长子串
  5. 【Python】青少年蓝桥杯_每日一题_10.27_日期差值的判断
  6. oracle中使用sys_connect_by_path进行表中行值连接
  7. android 字符串下标,android – 在TextView中为特定字符设置下标和上标?
  8. ADO.NET中的五个主要对象
  9. 【POJ - 1789】【ZOJ - 2158】【SCU - 1832】Truck History (最小生成树)
  10. Hive小文件问题:如何产生、造成影响、解放办法
  11. mysql 用户划表_mysql用户表
  12. liniux备忘录-磁盘配额与进阶文件系统管理
  13. matlab作图图例,为scatter3 plot创建图例(Matlab)
  14. 图:昌荣传播2010夏令营拉歌大赛胜利闭幕
  15. 计算机是根据用户名,根据用户名移动计算机账号
  16. 【RRT三维路径规划】基于matlab RRT算法无人机三维路径规划【含Matlab源码 1270期】
  17. python假设检验和区间估计_用 Python 实现常用的假设检验
  18. Hadoop系列(一)——HDFS总结
  19. 【R语言】dplyr包
  20. Raw与ProRes Raw

热门文章

  1. 在家怎么赚零花钱,分享几种宅家赚钱好方法
  2. Nashpy包学习(一)
  3. python爬取天气数据_用python爬取历史天气数据的方法示例
  4. 移动通信关键技术-多址技术和复用技术
  5. Spring for Kafka版本对照
  6. 什么是http,什么是tomcat,什么是Servlet
  7. php输出mysql数据
  8. Java内存模型中的三个代
  9. 基于Java的食品团购系统
  10. MATLAB算法实战应用案例精讲-【人工智能】语义分割(附实战应用案例及代码)