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中使用tarfile压缩、解压tar归档文件示例
Apr 05 Python
Python实现批量读取word中表格信息的方法
Jul 30 Python
python爬虫之BeautifulSoup 使用select方法详解
Oct 23 Python
python爬取亚马逊书籍信息代码分享
Dec 09 Python
python通过百度地图API获取某地址的经纬度详解
Jan 28 Python
详解如何在Apache中运行Python WSGI应用
Jan 02 Python
windows下numpy下载与安装图文教程
Apr 02 Python
Python应用领域和就业形势分析总结
May 14 Python
python+rsync精确同步指定格式文件
Aug 29 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
Sep 15 Python
Python移位密码、仿射变换解密实例代码
Jun 27 Python
Python与C++中梯度方向直方图的实现
Mar 17 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
一个程序下载的管理程序(四)
2006/10/09 PHP
PHP 开源框架22个简单简介
2009/08/24 PHP
php数组去重实例及分析
2013/11/26 PHP
php中switch与ifelse的效率区别及适用情况分析
2015/02/12 PHP
php动态生成缩略图并输出显示的方法
2015/04/20 PHP
用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
2010/06/19 Javascript
Javascript中的this绑定介绍
2011/09/22 Javascript
用javascript模仿ie的自动完成类似自动完成功的表单
2012/12/12 Javascript
jquery改变disabled的boolean状态的三种方法
2013/12/13 Javascript
Node.js和MongoDB实现简单日志分析系统
2015/04/25 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
2015/09/10 Javascript
JavaScript中清空数组的三种方式
2017/03/22 Javascript
vue源码入口文件分析(推荐)
2018/01/30 Javascript
vue+element UI实现树形表格带复选框的示例代码
2019/04/16 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
Python生成pdf文件的方法
2014/08/04 Python
Django Highcharts制作图表
2016/08/27 Python
使用 python pyautogui实现鼠标键盘控制功能
2019/08/04 Python
Python 字符串类型列表转换成真正列表类型过程解析
2019/08/26 Python
Python接口测试环境搭建过程详解
2020/06/29 Python
基于tf.shape(tensor)和tensor.shape()的区别说明
2020/06/30 Python
css3实现顶部社会化分享按钮示例
2014/05/06 HTML / CSS
基于CSS3实现的漂亮Menu菜单效果代码
2015/09/10 HTML / CSS
使用HTML5技术开发一个属于自己的超酷颜色选择器
2013/09/22 HTML / CSS
管道维修工岗位职责
2013/12/27 职场文书
应届实习生的自我评价范文
2014/01/05 职场文书
初中考试作弊检讨书
2014/02/01 职场文书
金融事务专业毕业生求职信
2014/02/23 职场文书
国贸专业的职业规划书
2014/03/15 职场文书
学校运动会报道稿
2014/09/23 职场文书
师范生免费教育协议书范本
2014/10/09 职场文书
2015年高三教学工作总结
2015/07/21 职场文书
事业单位岗位说明书
2015/10/08 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书
解决使用了nginx获取IP地址都是127.0.0.1 的问题
2021/09/25 Servers
叶县这家生产军用电台的兵工厂,人称“四机部”,走出一上将
2022/02/18 无线电