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中join和split用法实例
Apr 14 Python
Django中使用group_by的方法
May 26 Python
Python cookbook(数据结构与算法)筛选及提取序列中元素的方法
Mar 19 Python
Python 给屏幕打印信息加上颜色的实现方法
Apr 24 Python
Python中IP地址处理IPy模块的方法
Aug 16 Python
简单了解python 生成器 列表推导式 生成器表达式
Aug 22 Python
python2.7实现复制大量文件及文件夹资料
Aug 31 Python
numpy.transpose()实现数组的转置例子
Dec 02 Python
python使用pyecharts库画地图数据可视化的实现
Mar 25 Python
Python中bisect的用法及示例详解
Jul 20 Python
Pytorch生成随机数Tensor的方法汇总
Sep 09 Python
图神经网络GNN算法
May 11 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
php中static静态变量的使用方法详解
2010/06/04 PHP
PHP微信红包生成代码分享
2016/10/06 PHP
php实时倒计时功能实现方法详解
2017/02/27 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
2018/09/03 PHP
PHP session垃圾回收机制实例分析
2019/06/28 PHP
Prototype中dom对象方法汇总
2008/09/17 Javascript
CSS和Javascript简单复习资料
2010/06/29 Javascript
zeroclipboard复制到剪切板的flash
2010/08/04 Javascript
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
2012/02/27 Javascript
JavaScript中九种常用排序算法
2014/09/02 Javascript
无限树Jquery插件zTree的常用功能特性总结
2014/09/11 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
jQuery UI制作选项卡(tabs)
2016/12/13 Javascript
jQuery点击导航栏选中更换样式的实现代码
2017/01/23 Javascript
浅谈JS封闭函数、闭包、内置对象
2017/07/18 Javascript
详解weex默认webpack.config.js改造
2018/01/08 Javascript
微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例
2018/12/11 Javascript
javascript实现抢购倒计时程序
2019/08/26 Javascript
[01:00:11]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第一场 2月7日
2021/03/11 DOTA
用实例解释Python中的继承和多态的概念
2015/04/27 Python
python中使用PIL制作并验证图片验证码
2018/03/15 Python
PyQt5通信机制 信号与槽详解
2019/08/07 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
2020/05/15 Python
使用CSS3实现字体颜色渐变的实现
2020/08/10 HTML / CSS
HTML5拖放API实现拖放排序的实例代码
2017/05/11 HTML / CSS
100%有机精油,美容油:House of Pure Essence
2018/10/30 全球购物
寒假思想汇报
2014/01/10 职场文书
计划生育证明书写要求
2014/09/17 职场文书
政风行风整改报告
2014/11/06 职场文书
学前班幼儿评语大全
2014/12/29 职场文书
入党转正介绍人意见
2015/06/03 职场文书
2015入党个人自传范文
2015/06/26 职场文书
Matlab求解数组中的最大值及它所在的具体位置
2021/04/16 Python
教你怎么用Python操作MySql数据库
2021/05/31 Python
Python采集股票数据并制作可视化柱状图
2022/04/04 Python
python实现双链表
2022/05/25 Python