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爬虫之使用urllib2组件抓取网页内容
Nov 04 Python
Python连接SQLServer2000的方法详解
Apr 19 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
Feb 22 Python
python判断一个对象是否可迭代的例子
Jul 22 Python
python使用python-pptx删除ppt某页实例
Feb 14 Python
在Matplotlib图中插入LaTex公式实例
Apr 17 Python
Python求解排列中的逆序数个数实例
May 03 Python
django模板获取list中指定索引的值方式
May 14 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
Jun 04 Python
Python3如何在服务器打印资产信息
Aug 27 Python
Python爬取酷狗MP3音频的步骤
Feb 26 Python
python 指定源路径来解决import问题的操作
Mar 04 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 var_dump()函数的详解
2013/06/05 PHP
PHP 函数call_user_func和call_user_func_array用法详解
2014/03/02 PHP
百度实时推送api接口应用示例
2014/10/21 PHP
Yii2验证器(Validator)用法分析
2016/07/23 PHP
JavaScript 闭包深入理解(closure)
2009/05/27 Javascript
jQuery 开天辟地入门篇一
2009/12/09 Javascript
js null,undefined,字符串小结
2010/08/21 Javascript
jQuery 表单验证扩展(四)
2010/10/20 Javascript
20款非常优秀的 jQuery 工具提示插件 推荐
2012/07/15 Javascript
jquery简单的拖动效果实现原理及示例
2013/07/26 Javascript
js中的布尔运算符使用介绍
2013/11/20 Javascript
个人总结的一些JavaScript技巧、实用函数、简洁方法、编程细节
2015/06/10 Javascript
JavaScript判断DIV内容是否为空的方法
2016/01/29 Javascript
jQuery 如何给Carousel插件添加新的功能
2016/04/18 Javascript
百度搜索框智能提示案例jsonp
2016/11/28 Javascript
Radio 单选JS动态添加的选项onchange事件无效的解决方法
2016/12/12 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
详解React 16 中的异常处理
2017/07/28 Javascript
vue加载自定义的js文件方法
2018/03/13 Javascript
Vue2.0仿饿了么webapp单页面应用详细步骤
2018/07/08 Javascript
jQuery表单校验插件validator使用方法详解
2020/02/18 jQuery
[02:21]DOTA2英雄基础教程 蝙蝠骑士
2013/12/16 DOTA
Python操作SQLite数据库的方法详解
2017/06/16 Python
python实现多层感知器MLP(基于双月数据集)
2019/01/18 Python
新手学python应该下哪个版本
2020/06/11 Python
Matplotlib 绘制饼图解决文字重叠的方法
2020/07/24 Python
pycharm 添加解释器的方法步骤
2020/08/31 Python
财务会计毕业生自荐信
2013/11/02 职场文书
室内设计专业学生的自我评价分享
2013/11/27 职场文书
集团公司总经理岗位职责
2013/12/20 职场文书
预备党员的自我评价
2014/03/12 职场文书
学校安全管理责任书
2014/07/23 职场文书
离婚协议书怎么写
2014/09/12 职场文书
团代会邀请函
2015/02/02 职场文书
2015年防灾减灾工作总结
2015/07/24 职场文书
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
2022/07/15 Servers