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中操作文件之truncate()方法的使用教程
May 25 Python
python 网络编程详解及简单实例
Apr 25 Python
Python+selenium实现自动循环扔QQ邮箱漂流瓶
May 29 Python
python 文本单词提取和词频统计的实例
Dec 22 Python
python mac下安装虚拟环境的图文教程
Apr 12 Python
python3 logging日志封装实例
Apr 08 Python
Pycharm IDE的安装和使用教程详解
Apr 30 Python
python中列表的含义及用法
May 26 Python
如何在Python3中使用telnetlib模块连接网络设备
Sep 21 Python
如何用python识别滑块验证码中的缺口
Apr 01 Python
Python编写冷笑话生成器
Apr 20 Python
python实现商品进销存管理系统
May 30 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
可快速识别放射性物质-国外大神教你diy一个开放式辐射探测器
2020/03/12 无线电
生成静态页面的PHP类
2006/07/15 PHP
PHP抓取网页、解析HTML常用的方法总结
2015/07/01 PHP
PHP Smarty模版简单使用方法
2016/03/30 PHP
Laravel学习教程之model validation的使用示例
2017/10/23 PHP
Ajax+PHP实现的删除数据功能示例
2019/02/12 PHP
Yii框架的路由配置方法分析
2019/09/09 PHP
jQuery的Ajax的自动完成功能控件简要说明
2013/02/22 Javascript
Node.js实现在目录中查找某个字符串及所在文件
2014/09/03 Javascript
jQuery插件animateSlide制作多点滑动幻灯片
2015/06/11 Javascript
浅析node连接数据库(express+mysql)
2015/11/30 Javascript
封装获取dom元素的简单实例
2016/07/08 Javascript
Vuex之理解Getters的用法实例
2017/04/19 Javascript
nodejs实现用户登录路由功能
2019/05/22 NodeJs
Vue组件为什么data必须是一个函数
2020/06/11 Javascript
js代码编写无缝轮播图
2020/09/13 Javascript
每天迁移MySQL历史数据到历史库Python脚本
2018/04/13 Python
python使用PIL模块获取图片像素点的方法
2019/01/08 Python
Django框架自定义session处理操作示例
2019/05/27 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
django下创建多个app并设置urls方法
2020/08/02 Python
聊聊python中的循环遍历
2020/09/07 Python
Html5游戏开发之乒乓Ping Pong游戏示例(一)
2013/01/21 HTML / CSS
阿玛尼美妆英国官网:Giorgio Armani Beauty英国
2019/03/28 全球购物
某公司Java工程师面试题笔试题
2016/03/27 面试题
物流专业大学生求职信范文
2013/10/28 职场文书
保护环境的建议书
2014/03/12 职场文书
班级寄语大全
2014/04/10 职场文书
我是一名护士演讲稿
2014/08/28 职场文书
财务会计实训报告
2014/11/05 职场文书
2015年学校教务处工作总结
2015/05/11 职场文书
天那边观后感
2015/06/09 职场文书
婚礼父母致辞
2015/07/28 职场文书
5种 JavaScript 方式实现数组扁平化
2021/10/05 Javascript
Python机器学习应用之工业蒸汽数据分析篇详解
2022/01/18 Python
SQL注入篇学习之盲注/宽字节注入
2022/03/03 MySQL