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类和继承用法实例
Jul 07 Python
Windows下搭建python开发环境详细步骤
Jul 20 Python
使用Python编写一个最基础的代码解释器的要点解析
Jul 12 Python
如何将python中的List转化成dictionary
Aug 15 Python
Python解析excel文件存入sqlite数据库的方法
Nov 15 Python
小米5s微信跳一跳小程序python源码
Jan 08 Python
Django 实现下载文件功能的示例
Mar 06 Python
Python实现确认字符串是否包含指定字符串的实例
May 02 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
May 07 Python
python 模拟贷款卡号生成规则过程解析
Aug 30 Python
基于python3生成标签云代码解析
Feb 18 Python
python时间序列数据转为timestamp格式的方法
Aug 03 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
apache+mysql+php+ssl服务器之完全安装攻略
2006/09/05 PHP
解析如何用php screw加密php源代码
2013/06/20 PHP
php编写的简单页面跳转功能实现代码
2013/11/27 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
PHP SPL标准库中的常用函数介绍
2015/05/11 PHP
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
php获取远程图片并下载保存到本地的方法分析
2016/10/08 PHP
php和C#的yield迭代器实现方法对比分析
2019/07/17 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
通过javascript设置css属性的代码
2009/12/28 Javascript
Ajax异步提交表单数据的说明及方法实例
2013/06/22 Javascript
js常用数组操作方法简明总结
2014/06/20 Javascript
JavaScript中最简洁的编码html字符串的方法
2014/10/11 Javascript
JavaScript中的this关键字使用方法总结
2015/03/13 Javascript
js动态修改表格行colspan列跨度的方法
2015/03/30 Javascript
利用原生JS自动生成文章标题树的实例
2016/08/22 Javascript
ionic隐藏tabs的方法
2016/08/29 Javascript
vue.js前后端数据交互之提交数据操作详解
2018/04/24 Javascript
vue移动端路由切换实例分析
2018/05/14 Javascript
vue.js使用v-model指令实现的数据双向绑定功能示例
2018/05/22 Javascript
React Component存在的几种形式详解
2018/11/06 Javascript
微信小程序 函数防抖 解决重复点击消耗性能问题实现代码
2019/09/12 Javascript
[02:40]DOTA2英雄基础教程 炼金术士
2013/12/23 DOTA
Python实现获取网站PR及百度权重
2015/01/21 Python
老生常谈Python startswith()函数与endswith函数
2017/09/08 Python
Python爬取十篇新闻统计TF-IDF
2018/01/03 Python
django-filter和普通查询的例子
2019/08/12 Python
python导入库的具体方法
2020/06/18 Python
java关于string最常出现的面试题整理
2021/01/18 Python
html5中如何将图片的绝对路径转换成文件对象
2018/01/11 HTML / CSS
HTML5 拖放功能实现代码
2016/07/14 HTML / CSS
幼儿园六一主持词
2015/06/30 职场文书
文明礼貌主题班会
2015/08/14 职场文书
2017公司年会主持人开幕词
2016/03/04 职场文书
分享3个非常实用的 Python 模块
2022/03/03 Python
 python中的元类metaclass详情
2022/05/30 Python