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和Ruby中each循环引用变量问题(一个隐秘BUG?)
Jun 04 Python
Python的Tornado框架异步编程入门实例
Apr 24 Python
Python实现字符串逆序输出功能示例
Jun 24 Python
django输出html内容的实例
May 27 Python
基于OpenCV python3实现证件照换背景的方法
Mar 22 Python
Win10下Python3.7.3安装教程图解
Jul 08 Python
django如何自己创建一个中间件
Jul 24 Python
PyTorch中permute的用法详解
Dec 30 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
May 18 Python
pandas处理csv文件的方法步骤
Oct 16 Python
Python爬虫之Selenium鼠标事件的实现
Dec 04 Python
OpenCV-Python实现人脸美白算法的实例
Jun 11 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的基本常识小结
2013/07/05 PHP
PHP常用技术文之文件操作和目录操作总结
2014/09/27 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
2015/03/12 PHP
PHP中的常见魔术方法功能作用及用法实例
2015/07/01 PHP
PHP验证码生成原理和实现
2016/01/24 PHP
jquery api参考 visualjquery 中国线路 速度快
2007/11/30 Javascript
用Jquery实现多级下拉框无刷新的联动
2010/12/22 Javascript
两种常用的javascript数组去重方法思路及代码
2013/03/26 Javascript
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
2013/04/17 Javascript
密码框显示提示文字jquery示例
2013/08/29 Javascript
js模拟点击以提交表单为例兼容主流浏览器
2013/11/29 Javascript
js随机生成网页背景颜色的方法
2015/02/26 Javascript
JavaScript实现控制打开文件另存为对话框的方法
2015/04/17 Javascript
javascript中offset、client、scroll的属性总结
2015/08/13 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
2015/10/15 Javascript
Javascript6中字符串的四个新用法分享
2016/09/11 Javascript
手机端实现Bootstrap简单图片轮播效果
2016/10/13 Javascript
JS重载实现方法分析
2016/12/16 Javascript
React Native预设占位placeholder的使用
2017/09/28 Javascript
JS实现非首屏图片延迟加载的示例
2018/01/06 Javascript
解决select2在bootstrap modal中不能正常使用的问题
2018/08/09 Javascript
学习React中ref的两个demo示例
2018/08/14 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
jQuery基于随机数解决中午吃什么去哪吃问题示例
2018/12/29 jQuery
vue实现一个获取按键展示快捷键效果的Input组件
2021/01/13 Vue.js
Python实现的一个找零钱的小程序代码分享
2014/08/25 Python
python之django母板页面的使用
2018/07/03 Python
在python image 中实现安装中文字体
2020/05/16 Python
英国时尚家具、家居饰品及礼品商店:Graham & Green
2016/09/15 全球购物
香港卓悦化妆品官网:BONJOUR
2017/09/21 全球购物
购房意向书范本
2014/04/01 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书
邀请函模板
2015/02/02 职场文书
2015暑期爱心支教策划书
2015/07/14 职场文书
Django如何与Ajax交互
2021/04/29 Python
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python