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兔子毒药问题实例分析
Mar 05 Python
Python实现脚本锁功能(同时只能执行一个脚本)
May 10 Python
python制作小说爬虫实录
Aug 14 Python
TensorFlow平台下Python实现神经网络
Mar 10 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
Jun 19 Python
Python面向对象之类和对象属性的增删改查操作示例
Dec 14 Python
PyQt5 窗口切换与自定义对话框的实例
Jun 20 Python
python+tkinter实现学生管理系统
Aug 20 Python
python 实现控制鼠标键盘
Nov 27 Python
python3中for循环踩过的坑记录
Dec 14 Python
python简单实现插入排序实例代码
Dec 16 Python
解决Pytorch中关于model.eval的问题
May 22 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
随机头像PHP版
2006/10/09 PHP
如何在smarty中增加类似foreach的功能自动加载数据
2013/06/26 PHP
详解PHP中strlen和mb_strlen函数的区别
2014/03/07 PHP
php网站被挂木马后的修复方法总结
2014/11/06 PHP
php实现数组按指定KEY排序的方法
2015/03/30 PHP
理解 JavaScript 预解析
2009/10/25 Javascript
jQuery实现的类flash菜单效果代码
2010/05/17 Javascript
jQuery拖动div、移动div、弹出层实现原理及示例
2014/04/08 Javascript
JavaScript二维数组实现的省市联动菜单
2014/05/08 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
javascript正则表达式基础知识入门
2015/04/20 Javascript
jquery获取select选中值的方法分析
2015/12/22 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
2016/03/05 Javascript
原生Javascript和jQuery做轮播图简单例子
2016/10/11 Javascript
利用Bootstrap实现表格复选框checkbox全选
2016/12/21 Javascript
JS 插件dropload下拉刷新、上拉加载使用小结
2017/04/13 Javascript
Angularjs验证用户输入的字符串是否为日期时间
2017/06/01 Javascript
bootstrap table sum总数量统计实现方法
2017/10/29 Javascript
微信小程序收藏功能的实现代码
2018/06/12 Javascript
深入浅出理解JavaScript闭包的功能与用法
2018/08/01 Javascript
使用Python对MySQL数据操作
2017/04/06 Python
详谈python3 numpy-loadtxt的编码问题
2018/04/29 Python
Django框架多表查询实例分析
2018/07/04 Python
flask中的wtforms使用方法
2018/07/21 Python
numpy数组广播的机制
2019/07/12 Python
python 利用jinja2模板生成html代码实例
2019/10/10 Python
Pycharm小白级简单使用教程
2020/01/08 Python
Python基于Twilio及腾讯云实现国际国内短信接口
2020/06/18 Python
python爬虫数据保存到mongoDB的实例方法
2020/07/28 Python
Django通过设置CORS解决跨域问题
2020/11/26 Python
使用CSS实现弹性视频html5案例实践
2012/12/26 HTML / CSS
工厂门卫的岗位职责
2014/07/27 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
法律意见书范本
2015/06/04 职场文书
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
2021/05/14 Python
利用JuiceFS使MySQL 备份验证性能提升 10 倍
2022/03/17 MySQL