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发送邮件示例(支持中文邮件标题)
Feb 16 Python
Python实现的二维码生成小软件
Jul 11 Python
用Python的pandas框架操作Excel文件中的数据教程
Mar 31 Python
详解Python中find()方法的使用
May 18 Python
python实现QQ批量登录功能
Jun 19 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
Sep 25 Python
详解基于python的多张不同宽高图片拼接成大图
Sep 26 Python
django API 中接口的互相调用实例
Apr 01 Python
OpenCV利用python来实现图像的直方图均衡化
Oct 21 Python
python用tkinter实现一个gui的翻译工具
Oct 26 Python
python des,aes,rsa加解密的实现
Jan 16 Python
python链表类中获取元素实例方法
Feb 23 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 查找字符串常用函数介绍
2012/06/07 PHP
Yii编程开发常见调用技巧集锦
2016/07/15 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
PHPMAILER实现PHP发邮件功能
2018/04/18 PHP
使用laravel根据用户类型来显示或隐藏字段
2019/10/17 PHP
PHP底层运行机制与工作原理详解
2020/07/31 PHP
Some tips of wmi scripting in jscript (1)
2007/04/03 Javascript
JS随机漂浮广告代码具体实例
2013/11/19 Javascript
JS仿百度搜索自动提示框匹配查询功能
2013/11/21 Javascript
document.addEventListener使用介绍
2014/03/07 Javascript
JavaScript Serializer序列化时间处理示例
2014/07/31 Javascript
jQuery的ready方法实现原理分析
2016/10/26 Javascript
基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)
2016/11/17 Javascript
jquery实现放大镜简洁代码(推荐)
2017/06/08 jQuery
微信小程序开发实现的IP地址查询功能示例
2019/03/28 Javascript
JS 设计模式之:单例模式定义与实现方法浅析
2020/05/06 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
2020/05/20 Javascript
echarts浮动显示单位的实现方法示例
2020/12/04 Javascript
Vue多选列表组件深入详解
2021/03/02 Vue.js
python操作 hbase 数据的方法
2016/12/18 Python
Python 调用 zabbix api的方法示例
2019/01/06 Python
Python绘制热力图示例
2019/09/27 Python
Python定义函数时参数有默认值问题解决
2019/12/19 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
2020/09/14 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
2020/11/24 Python
Html5 页面适配iPhoneX(就是那么简单)
2019/09/05 HTML / CSS
中国领先的专业演出票务网:永乐票务
2016/08/29 全球购物
JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
2013/07/02 面试题
计算机应届毕业生自荐信范文
2014/02/23 职场文书
建筑管理专业求职信
2014/07/28 职场文书
学年个人总结范文
2015/03/05 职场文书
2015年高校辅导员工作总结
2015/04/20 职场文书
大学生各类奖学金申请书
2019/06/24 职场文书
告诉你一个秘密:富人致富的五大优点
2019/07/11 职场文书
Python实现简繁体转换
2021/06/07 Python
MySQL系列之十一 日志记录
2021/07/02 MySQL