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实现自动发送邮件发送多人、群发、多附件的示例
Jan 23 Python
Python基于辗转相除法求解最大公约数的方法示例
Apr 04 Python
Python运维之获取系统CPU信息的实现方法
Jun 11 Python
python占位符输入方式实例
May 27 Python
使用PyCharm进行远程开发和调试的实现
Nov 04 Python
使用python和pygame制作挡板弹球游戏
Dec 03 Python
pytorch方法测试——激活函数(ReLU)详解
Jan 15 Python
TensorFlow梯度求解tf.gradients实例
Feb 04 Python
使用pyecharts1.7进行简单的可视化大全
May 17 Python
python制作一个简单的gui 数据库查询界面
Nov 19 Python
Python就将所有的英文单词首字母变成大写
Feb 12 Python
Python词云的正确实现方法实例
May 08 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 中文处理技巧
2010/04/25 PHP
一个PHP并发访问实例代码
2012/09/06 PHP
php下拉选项的批量操作的实现代码
2013/10/14 PHP
php堆排序(heapsort)练习
2013/11/13 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
2014/07/04 PHP
PHP使用json_encode函数时不转义中文的解决方法
2014/11/12 PHP
yii权限控制的方法(三种方法)
2015/12/28 PHP
YII2自动登录Cookie总是失效的解决方法
2017/06/28 PHP
PHP常用字符串函数小结(推荐)
2018/08/05 PHP
PHP删除数组中特定元素的两种方法
2019/02/28 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
2019/03/06 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
jQuery检测输入的字符串包含的中英文的数量
2015/04/17 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
2015/06/26 Javascript
jquery实现隐藏在左侧的弹性弹出菜单效果
2015/09/18 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
2015/11/20 Javascript
jQuery实现可以控制图片旋转角度效果(附demo源码下载)
2016/01/27 Javascript
深入分析javascript中console命令
2016/08/14 Javascript
ionic实现可滑动的tab选项卡切换效果
2020/04/15 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
Vue组件通信实践记录(推荐)
2017/08/15 Javascript
微信小程序实现自上而下字幕滚动
2018/07/14 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
2019/05/12 Javascript
vue-cli3项目展示本地Markdown文件的方法
2019/06/07 Javascript
使用imba.io框架得到比 vue 快50倍的性能基准
2019/06/17 Javascript
JS实现判断移动端PC端功能
2020/02/21 Javascript
JS实现canvas简单小画板功能
2020/06/23 Javascript
解决VueCil代理本地proxytable无效报错404的问题
2020/11/07 Javascript
CentOS6.5设置Django开发环境
2016/10/13 Python
python opencv进行图像拼接
2020/03/27 Python
利用python控制Autocad:pyautocad方式
2020/06/01 Python
详解Django中异步任务之django-celery
2020/11/05 Python
浅谈Python xlwings 读取Excel文件的正确姿势
2021/02/26 Python
屈臣氏越南官网:Watsons越南
2021/01/14 全球购物
mysql中关键词exists的用法实例详解
2022/06/10 MySQL