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实现的数据结构与算法之快速排序详解
Apr 22 Python
Python实现的Google IP 可用性检测脚本
Apr 23 Python
Python的dict字典结构操作方法学习笔记
May 07 Python
实例探究Python以并发方式编写高性能端口扫描器的方法
Jun 14 Python
Python实现base64编码的图片保存到本地功能示例
Jun 22 Python
Python实现聊天机器人的示例代码
Jul 09 Python
Sanic框架Cookies操作示例
Jul 17 Python
python tkinter实现界面切换的示例代码
Jun 14 Python
python绘制直方图和密度图的实例
Jul 08 Python
Pandas DataFrame中的tuple元素遍历的实现
Oct 23 Python
Python count函数使用方法实例解析
Mar 23 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
Jan 12 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文件读取功能的应用实例
2015/05/08 PHP
php实现Mysql简易操作类
2015/10/11 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
2016/05/26 PHP
CodeIgniter集成smarty的方法详解
2016/05/26 PHP
详解phpstorm2020最新破解方法
2020/09/17 PHP
jQuery的一些注意
2006/12/06 Javascript
jquery动态加载图片数据练习代码
2011/08/04 Javascript
JQuery获取浏览器窗口内容部分高度的代码
2012/02/24 Javascript
jQuery-serialize()输出序列化form表单值的方法
2012/12/26 Javascript
判断window.onload是否多次使用的方法
2014/09/21 Javascript
jquery动态分页效果堪比时光网
2014/09/25 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
2014/12/31 Javascript
JQuery中clone方法复制节点
2015/05/18 Javascript
JS动态创建DOM元素的方法
2015/06/09 Javascript
适用于javascript开发者的Processing.js入门教程
2016/02/24 Javascript
JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
2016/06/17 Javascript
JavaScript与JQUERY获取元素的宽、高和位置
2017/02/26 Javascript
React中使用collections时key的重要性详解
2017/08/07 Javascript
angular+ionic返回上一页并刷新页面
2017/08/08 Javascript
超出JavaScript安全整数限制的数字计算BigInt详解
2018/06/24 Javascript
vue 实现数字滚动增加效果的实例代码
2018/07/06 Javascript
Node.js API详解之 os模块用法实例分析
2020/05/06 Javascript
Ant Design Pro 之 ProTable使用操作
2020/10/31 Javascript
Python基于pygame实现图片代替鼠标移动效果
2015/11/11 Python
JS设计模式之责任链模式实例详解
2018/02/03 Python
简单了解django orm中介模型
2019/07/30 Python
事业单位公务员的职业生涯规划
2014/01/15 职场文书
英语老师推荐信
2014/02/26 职场文书
公司司机岗位职责范本
2014/03/03 职场文书
优秀公益广告词大全
2014/03/19 职场文书
学生不讲诚信检讨书
2014/09/29 职场文书
婚前财产协议书范本
2014/10/19 职场文书
实习单位证明范例
2014/11/17 职场文书
学校端午节活动总结
2015/02/11 职场文书
护士长2015年终工作总结
2015/04/24 职场文书
工作态度怎么写
2015/06/25 职场文书