python推导式的使用方法实例


Posted in Python onFebruary 28, 2021

前言

推导式提供了更简洁高效的方法来生成序列而又不失代码的可读性。

定义: 推导式是 Python 里很有用的一个特性,它可以用一行代码就可以创建一个新的序列(比如:列表,集合,字典等等)。通过这个性能,不仅可以少写很多代码,而且性能上也更快。

Python 里有四种推导式:

  • 列表推导式(List Comprehensions)
  • 字典推导式(Dictionary Comprehensions)
  • 集合推导式(Set Comprehensions)
  • 生成器推导式(Generator Comprehensions)

一、列表推导式(List Comprehensions)

假如你有一个列表,你想去掉该列表中的所有负数,那通常的做法使用 for 循环

numbers=[1,-2,3,-4,5]
new_nums=[]
for num in numbers:
 if num>0:
  new_nums.append(num)
print(new_nums)

输出结果:

python推导式的使用方法实例

但如果我们用列表推导式来实现,那么这个过程就短得多,只需要一行代码:

numbers=[1,-2,3,-4,5]
new_nums=[num for num in numbers if num>0]

print(new_nums)

输出结果同上。

列表推导式的结构:

output_list = [expression for var in input_list if condition]

这里的 if condition 语句并不是必须有的。

二、字典推导式(Dictionary Comprehensions)

跟列表推导式一样,通过同样方式生成字典的方法,就是字典推导式。

假如你想从一个全是数字的列表来创建一个字典,列表里的数字作为 key, 数字的的字符串值作为 value, 然后再某个限制条件,最终获得你想要的字典数据:

nums=[1,2,3,4,5,6,7,8]

dict={}
for num in nums:
 if num %2 == 0:
  dict[num] = str(num)

print(dict)

输出结果:

python推导式的使用方法实例

如果我们使用字典推导式,就会简洁的多:

nums=[1,2,3,4,5,6,7,8]
dict={num:str(num) for num in nums if num % 2 == 0}

print(dict)

输出结果同上。

字典推导式的模板:

{key:value for (key,value) in dict if key,value satisfy condition}

三、集合推导式(Set Comprehensions)

集合推导式跟列表推导式差不多。就比如我们要把一个全是数字的列表中的奇数组成一个集合,用 for 循环的话:

numbers=[1,2,3,4,5,6,7,8]
filtered_nums=set()

for num in numbers:
  if num %2 == 0:
   filtered_nums.add(num)

print(filtered_nums)

输出结果:

python推导式的使用方法实例

如果我们使用集合表达式来表示:

numbers=[1,2,3,4,5,6,7,8]
filtered_nums={num for num in numbers if num %2 == 0}

print(filtered_nums)

输出结果同上。

注意: 集合推导式除了是使用 {} 外,其他形式都跟列表推导式一样。

四、生成器推导式(Generator Comprehensions)

生成器推导式(或叫生成器表达式),其结构也跟列表表达式相似。

例如我们将数字列表中各项平方运算并排除奇数项:

def square_even(numbers):
  for number in numbers:
   if number % 2 == 0:
     yield (number * number)

numbers=[1,2,3,4,5,6]
square_numbers=square_even(numbers)

for number in square_numbers:
  print(number)

输出结果:

python推导式的使用方法实例

使用生成器推导式显示为:

numbers=[1,2,3,4,5,6]
square_numbers=(num *num for num in numbers if num % 2 ==0)

for number in square_numbers:
  print(number)

输出结果同上。

注意: 生成器推导式是使用 () ,其他基本结构跟列表推导式一样。

总结

到此这篇关于python推导式的使用方法的文章就介绍到这了,更多相关python推导式使用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中常用操作字符串的函数与方法总结
Feb 04 Python
Ruby元编程基础学习笔记整理
Jul 02 Python
Python Socket实现简单TCP Server/client功能示例
Aug 05 Python
Python中表示字符串的三种方法
Sep 06 Python
Python标准模块--ContextManager上下文管理器的具体用法
Nov 27 Python
python读写配置文件操作示例
Jul 03 Python
在Python中实现函数重载的示例代码
Dec 12 Python
tensorflow实现将ckpt转pb文件的方法
Apr 22 Python
python 实现压缩和解压缩的示例
Sep 22 Python
如何使用PyCharm引入需要使用的包的方法
Sep 22 Python
python基于openpyxl生成excel文件
Dec 23 Python
Python获取指定日期是"星期几"的6种方法
Mar 13 Python
python线程优先级队列知识点总结
Feb 28 #Python
利用Opencv实现图片的油画特效实例
Feb 28 #Python
利用python实现后端写网页(flask框架)
Feb 28 #Python
python pyg2plot的原理知识点总结
Feb 28 #Python
python在协程中增加任务实例操作
Feb 28 #Python
python 制作本地应用搜索工具
Feb 27 #Python
如何用Python进行时间序列分解和预测
Mar 01 #Python
You might like
一个SQL管理员的web接口
2006/10/09 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
2014/04/25 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
2017/01/13 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
2017/04/18 PHP
ExtJS中文乱码之GBK格式编码解决方案及代码
2013/01/20 Javascript
浅析JavaScript中的隐式类型转换
2013/12/05 Javascript
JS+CSS实现自适应选项卡宽度的圆角滑动门效果
2015/09/15 Javascript
JS+CSS实现简易的滑动门效果代码
2015/09/24 Javascript
JavaScript_ECMA5数组新特性详解
2016/06/12 Javascript
jQuery模拟Marquee实现无缝滚动效果完整实例
2016/09/29 Javascript
AngularJS 验证码60秒倒计时功能的实现
2017/06/05 Javascript
微信小程序动态显示项目倒计时效果
2017/06/13 Javascript
nodejs中安装ghost出错的原因及解决方法
2017/10/23 NodeJs
基于JavaScript+HTML5 实现打地鼠小游戏逻辑流程图文详解(附完整代码)
2017/11/02 Javascript
javascript实现循环广告条效果
2017/12/12 Javascript
JS实现求5的阶乘示例
2019/01/21 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
Python中使用第三方库xlrd来读取Excel示例
2015/04/05 Python
python实现逻辑回归的方法示例
2017/05/02 Python
如何在Django项目中引入静态文件
2019/07/26 Python
Python中IP地址处理IPy模块的方法
2019/08/16 Python
python使用 cx_Oracle 模块进行查询操作示例
2019/11/28 Python
Django3.0 异步通信初体验(小结)
2019/12/04 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
2020/04/26 Python
利用Python实现Json序列化库的方法步骤
2020/09/09 Python
Python基于callable函数检测对象是否可被调用
2020/10/16 Python
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
美国生日蛋糕店:Bake Me A Wish!
2017/02/08 全球购物
高中毕业生个人自我鉴定
2013/11/24 职场文书
广场舞大赛策划方案
2014/05/31 职场文书
教室标语大全
2014/06/21 职场文书
社区党风廉政建设调研报告
2015/01/01 职场文书
预备党员半年考察意见
2015/06/01 职场文书
干部培训简讯
2015/07/20 职场文书
OpenCV-Python直方图均衡化实现图像去雾
2021/06/07 Python
总结一下关于在Java8中使用stream流踩过的一些坑
2021/06/24 Java/Android