Python列表推导式与生成器表达式用法示例


Posted in Python onFebruary 08, 2018

本文实例讲述了Python列表推导式与生成器表达式用法。分享给大家供大家参考,具体如下:

和列表一样,列表推导式也采用方括号[]表示,并且用到了一个简写版的for循环,第一部分是一个生成结果列表元素的表达式,第二部分是一个输入表达式上的循环。阅读理解列表表达式的推荐做法是先从里面的for循环开始,向右查看是否有if条件,然后将推导式开始的那个表达式映射到每一个匹配的元素上去。

>>> even_numbers = [x for x in range(10) if x%2 == 0]
>>> even_numbers
[0,2,4,6,8]

以上例子展示了使用if语句来过滤元素。

Python还支持另外一种和列表表达式类似的结构,叫做生成器表达式(generator expression),除了它有一种称之为“惰性计算”的特点以外,它和列表推导式的用法基本一致。它的工作方式是每次处理一个对象,而不是一口气处理和构造整个数据结构,这样做的潜在优点是可以节省大量的内存。

>>> even_numbers = (x for x in range(10000) if x%2 == 0)
>>> even_numbers
<generator object at 0x....>

在处理大量的数据是,最好考虑生成器表达式而不是列表推导式。

另一个列表推导式和生成器表达式的例子是:

>>> data = ['abc','def','I use python', 'hong201']
>>> sum([len(word) for word in data])
25
>>> sum(len(word) for word in data)
25

enumerate()是一个同时能让你迭代和计数的内置函数,而for循环自身只能迭代而没办法计数:

>>> data = [123,"abc",3.14]
>>> for i in enumerate(data):
...   print i
...
(0, 123)
(1, 'abc')
(2, 3.14)

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python pass 语句使用示例
Mar 11 Python
利用python如何处理nc数据详解
May 23 Python
python pandas中对Series数据进行轴向连接的实例
Jun 08 Python
用Cython加速Python到“起飞”(推荐)
Aug 01 Python
Python 图像对比度增强的几种方法(小结)
Sep 25 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
Jan 15 Python
Python如何通过Flask-Mail发送电子邮件
Jan 29 Python
python实现人机猜拳小游戏
Feb 03 Python
Django项目uwsgi+Nginx保姆级部署教程实现
Apr 19 Python
10行Python代码实现Web自动化管控的示例代码
Aug 14 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
Jan 28 Python
只需要100行Python代码就可以实现的贪吃蛇小游戏
May 27 Python
详解python OpenCV学习笔记之直方图均衡化
Feb 08 #Python
python OpenCV学习笔记实现二维直方图
Feb 08 #Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
Feb 08 #Python
Python编程argparse入门浅析
Feb 07 #Python
PyQt5主窗口动态加载Widget实例代码
Feb 07 #Python
学习python中matplotlib绘图设置坐标轴刻度、文本
Feb 07 #Python
PyQt5打开文件对话框QFileDialog实例代码
Feb 07 #Python
You might like
农民和部队如何穿矿
2020/03/04 星际争霸
用PHP编程语言开发动态WAP页面
2006/10/09 PHP
PHP getDocNamespaces()函数讲解
2019/02/03 PHP
关于laravel5.5的定时任务详解(demo)
2019/10/23 PHP
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
jquery获取css中的选择器(实例讲解)
2013/12/02 Javascript
js通过iframe加载外部网页的实现代码
2015/04/05 Javascript
JQuery分屏指示器图片轮换效果实例
2015/05/21 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
2015/08/07 Javascript
js数组常见操作及数组与字符串相互转化实例详解
2015/11/10 Javascript
Javascript操作表单实例讲解(下)
2016/06/20 Javascript
jQuery无缝轮播图代码
2016/12/22 Javascript
jquery表单插件form使用方法详解
2017/01/20 Javascript
loading动画特效小结
2017/01/22 Javascript
js 去掉字符串前后空格实现代码集合
2017/03/25 Javascript
如何重置vue打印变量的显示方式
2017/12/06 Javascript
JS实现根据指定值删除数组中的元素操作示例
2018/08/02 Javascript
谈谈为什么你的 JavaScript 代码如此冗长
2019/01/30 Javascript
Nodejs对postgresql基本操作的封装方法
2019/02/20 NodeJs
flexible.js实现移动端rem适配方案
2020/04/07 Javascript
jquery实现手风琴案例
2020/05/04 jQuery
Python如何计算语句执行时间
2019/11/22 Python
基于python的列表list和集合set操作
2019/11/24 Python
Python 批量读取文件中指定字符的实现
2020/03/06 Python
基于Python和C++实现删除链表的节点
2020/07/06 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
2020/07/13 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
图库照片、免版税图片、矢量艺术、视频片段:Depositphotos
2019/08/02 全球购物
计算机专业职业规划
2014/02/28 职场文书
小学作文评语大全
2014/04/21 职场文书
2014年敬老院工作总结
2014/12/08 职场文书
周一给客户的问候语
2015/11/10 职场文书
详解如何在Canvas中添加事件的方法
2021/04/17 Javascript
使用python+pygame开发消消乐游戏附完整源码
2021/06/10 Python
python中对列表的删除和添加方法详解
2022/02/24 Python
python中使用redis用法详解
2022/12/24 Redis