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脚本使得web页面上的代码高亮显示
Apr 24 Python
全面了解python中的类,对象,方法,属性
Sep 11 Python
Python json 错误xx is not JSON serializable解决办法
Mar 15 Python
python爬取w3shcool的JQuery课程并且保存到本地
Apr 06 Python
基于python实现聊天室程序
Jul 27 Python
Python多线程原理与用法详解
Aug 20 Python
python在html中插入简单的代码并加上时间戳的方法
Oct 16 Python
Django objects的查询结果转化为json的三种方式的方法
Nov 07 Python
如何基于Python实现数字类型转换
Feb 07 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
Feb 29 Python
Python中使用socks5设置全局代理的方法示例
Apr 15 Python
结束运行python的方法
Jun 16 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实现通过Luhn算法校验信用卡卡号是否有效
2015/03/23 PHP
php 微信公众平台开发模式实现多客服的实例代码
2016/11/07 PHP
php中的抽象方法和抽象类
2017/02/14 PHP
PHP设计模式之适配器模式原理与用法分析
2018/04/25 PHP
jQuery live( type, fn ) 委派事件实现
2009/10/11 Javascript
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
JS模块与命名空间的介绍
2013/03/22 Javascript
document.addEventListener使用介绍
2014/03/07 Javascript
jQuery+PHP打造滑动开关效果
2014/12/16 Javascript
JavaScript DOM操作表格及样式
2015/04/13 Javascript
简单实现异步编程promise模式
2015/07/31 Javascript
JS函数多个参数默认值指定方法分析
2016/11/28 Javascript
Angular.Js之Scope作用域的学习教程
2017/04/27 Javascript
jQuery实现可拖动进度条实例代码
2017/06/21 jQuery
利用vue + element实现表格分页和前端搜索的方法
2017/12/25 Javascript
使用async、enterproxy控制并发数量的方法详解
2018/01/02 Javascript
AngularJS修改model值时,显示内容不变的实例
2018/09/13 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
在vue中使用setInterval的方法示例
2019/04/16 Javascript
[01:12](回顾)DOTA2国际邀请赛,全世界DOTAer的盛宴
2014/07/01 DOTA
[01:14:31]Secret vs VG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
python基础知识小结之集合
2015/11/25 Python
打包发布Python模块的方法详解
2016/09/18 Python
Windows下安装python MySQLdb遇到的问题及解决方法
2017/03/16 Python
python算法表示概念扫盲教程
2017/04/13 Python
Python中使用haystack实现django全文检索搜索引擎功能
2017/08/26 Python
PyCharm GUI界面开发和exe文件生成的实现
2020/03/04 Python
video结合canvas实现视频在线截图功能
2018/06/25 HTML / CSS
亚马逊西班牙购物网站:amazon西班牙
2017/03/06 全球购物
英国健身专家:WIT Fitness
2021/02/09 全球购物
机械专业技术员求职信
2014/06/14 职场文书
英语辞职信怎么写
2015/02/28 职场文书
2016年“世界环境日”校园广播稿
2015/12/18 职场文书
使用python如何删除同一文件夹下相似的图片
2021/05/07 Python
win11怎么用快捷键锁屏? windows11锁屏的几种方法
2021/11/21 数码科技
Pandas数据结构之Series的使用
2022/03/31 Python