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自动化测试之连接几组测试包实例
Sep 28 Python
Python多线程编程(六):可重入锁RLock
Apr 05 Python
python 队列详解及实例代码
Oct 18 Python
基于python实现在excel中读取与生成随机数写入excel中
Jan 04 Python
python调用百度语音REST API
Aug 30 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
Feb 21 Python
python f-string式格式化听语音流程讲解
Jun 18 Python
Django 响应数据response的返回源码详解
Aug 06 Python
Python imutils 填充图片周边为黑色的实现
Jan 19 Python
Django+boostrap 美化admin后台的操作
Mar 11 Python
python的help函数如何使用
Jun 11 Python
python数据可视化使用pyfinance分析证券收益示例详解
Nov 20 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/06/26 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
2019/10/08 PHP
Javascript 生成指定范围数值随机数
2009/01/09 Javascript
JavaScript DOM 添加事件
2009/02/14 Javascript
W3C Group的JavaScript1.8 新特性介绍
2009/05/19 Javascript
JavaScript 设计模式 安全沙箱模式
2010/09/24 Javascript
基于Jquery的仿照flash放大图片效果代码
2011/03/16 Javascript
jQuery的.live()和.die() 使用介绍
2011/09/10 Javascript
JS中setTimeout()的用法详解
2013/04/14 Javascript
JavaScript三元运算符的多种使用技巧
2015/04/16 Javascript
JavaScript基础之AJAX简单的小demo
2017/01/29 Javascript
详解Vue 非父子组件通信方法(非Vuex)
2017/05/24 Javascript
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
小程序登录态管理的方法示例
2018/11/13 Javascript
微信小程序swiper禁止用户手动滑动代码实例
2019/08/23 Javascript
uniapp,微信小程序中使用 MQTT的问题
2020/07/11 Javascript
Python time模块详解(常用函数实例讲解,非常好)
2014/04/24 Python
Python中Collection的使用小技巧
2014/08/18 Python
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
python和bash统计CPU利用率的方法
2015/07/10 Python
python语言使用技巧分享
2016/05/31 Python
python版微信跳一跳游戏辅助
2018/01/11 Python
Python检测网络延迟的代码
2018/05/15 Python
Pandas之ReIndex重新索引的实现
2019/06/25 Python
python自定义函数实现最大值的输出方法
2019/07/09 Python
python定义具名元组实例操作
2021/02/28 Python
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
Html5基于canvas实现电子签名并生成PDF文档
2020/12/07 HTML / CSS
可靠的数据流传输TCP
2016/03/15 面试题
采购文员岗位职责
2013/11/20 职场文书
《草原的早晨》教学反思
2014/04/08 职场文书
《宿建德江》教学反思
2014/04/23 职场文书
日语专业毕业生自荐书
2014/06/18 职场文书
家长会欢迎标语
2014/06/24 职场文书
致运动员加油稿
2015/07/21 职场文书
导游词之山西关帝庙
2019/11/01 职场文书