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中的filter和lambda函数的使用
Apr 07 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
May 15 Python
python直接获取API传递回来的参数方法
Dec 17 Python
DRF跨域后端解决之django-cors-headers的使用
Jan 27 Python
Python利用heapq实现一个优先级队列的方法
Feb 03 Python
Django框架用户注销功能实现方法分析
May 28 Python
Python之修改图片像素值的方法
Jul 03 Python
python中的反斜杠问题深入讲解
Aug 12 Python
sklearn+python:线性回归案例
Feb 24 Python
Python如何使用队列方式实现多线程爬虫
May 12 Python
使用PyCharm官方中文语言包汉化PyCharm
Nov 18 Python
Python中Cookies导出某站用户数据的方法
May 17 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 excel类 phpExcel使用方法介绍
2010/08/21 PHP
php中使用addslashes函数报错问题的解决方法
2013/02/06 PHP
PHP中的流(streams)浅析
2015/07/02 PHP
PHP 中提示undefined index如何解决(多种方法)
2016/03/16 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
prototype Element学习笔记(篇一)
2008/10/26 Javascript
用Jquery重写windows.alert方法实现思路
2013/04/03 Javascript
javascript 获取模态窗口的滚动位置代码
2013/08/06 Javascript
JS获取单击按钮单元格所在行的信息
2014/06/17 Javascript
JavaScript中使用Math.PI圆周率属性的方法
2015/06/14 Javascript
jQuery事件绑定on()与弹窗实现代码
2016/04/28 Javascript
BootStrap 超链接变按钮的实现方法
2016/09/25 Javascript
浅谈js中的变量名和函数名重名
2017/02/13 Javascript
Vue.js路由vue-router使用方法详解
2017/03/20 Javascript
Vue父子组建的简单通信之控制开关Switch的实现
2018/06/04 Javascript
echarts大屏字体自适应的方法步骤
2019/07/12 Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
2019/09/28 Javascript
Vue.js组件props数据验证实现详解
2019/10/19 Javascript
用python结合jieba和wordcloud实现词云效果
2017/09/05 Python
python机器学习理论与实战(五)支持向量机
2018/01/19 Python
Python数据类型之Tuple元组实例详解
2019/05/08 Python
python导包的几种方法(自定义包的生成以及导入详解)
2019/07/15 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
2020/06/08 Python
Web前端页面跳转并取到值
2017/04/24 HTML / CSS
荷兰家电销售网站:Welhof
2020/12/08 全球购物
公司财务自我评价分享
2013/12/17 职场文书
黄金搭档广告词
2014/03/21 职场文书
党员干部承诺书
2014/03/25 职场文书
文科毕业生自荐书范文
2014/04/17 职场文书
员工培训协议书
2014/09/15 职场文书
村党支部书记个人对照材料汇报
2014/10/26 职场文书
爱的教育观后感
2015/06/17 职场文书
七夕情人节问候语
2015/11/11 职场文书
2016班级元旦联欢会开幕词
2016/03/04 职场文书
Python 快速验证代理IP是否有效的方法实现
2021/07/15 Python
自动在Windows中运行Python脚本并定时触发功能实现
2021/09/04 Python