Python列表解析和生成器
2016-12-24 14:57
239 查看
列表解析
列表解析来自函数式编程语言:Haskell, 它是一个非常有用的工具,可以动态的创建列表列表解析的语法
[expr for iter_var in iterable]expr是表达式,iter是迭代变量,它不需要是expr的一部分,但是for关键字是必须的,iterable代表可以迭代的变量,例如序列类型的对象:字符串,列表,元组,还有映射类型的对象,即字典,或者是实现了__iter__()和next()方法的类也可以。
>>> [x + 2 for x in range(3)] [2, 3, 4]
看出来列表中每个元素都增加了2
列表解析增加判断条件
>>> [x + 2 for x in range(10) if x % 2] [3, 5, 7, 9, 11]在这里,我们增加了一个判断条件 x % 2,如果 x % 2 == 1,也就是说x是奇数的时候,我们将其加2并且加入到列表中,于是就生成了列表[3, 5, 7, 9, 11]
列表解析实现多个for循环嵌套
我们可以用一个列表解析表达式,实现多个for循环嵌套:>>> [(x, y) for x in range(3) for y in range(4)] [(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3)]
这个表达式代表一个嵌套循环,等价于以下语句
>>> a = [] >>> for x in range(3): ... for y in range(4): ... a.append((x, y)) ... >>> a [(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3)]可以看出,列表解析表达式可以极大的减少代码量,而且也不失可读性,另外,列表解析表达式的效率也很高,可以取代内建的map()函数和lambda表达式
生成器表达式
相关文章推荐
- [转]Python里有趣的列表解析和生成器表达式
- Python 列表解析和生成器表达式
- python之列表解析与生成器
- Python之道–列表解析和生成器
- 4 Python 迭代器_生成器_列表解析
- python整理十——生成器表达式与列表解析
- Python 生成器与列表解析
- 举例讲解Python中的迭代器、生成器与列表解析用法
- python之列表解析与生成器
- python生成器表达式和列表解析
- python列表解析和生成器表达式
- Learning Python:1. 生成器函数、列表解析与map,for循环的效率对比
- 学习日志---python(列表解析、生成器、字典和集合)
- python基础(3)--条件判断循环语句与列表解析,生成器
- Python 生成器函数,生成器表达式,迭代器,列表解析
- Python里有趣的列表解析和生成器表达式
- 零基础学python-19.8 生成器表达式:当迭代器遇上列表解析
- python中迭代器、列表解析、生成器的分析比较
- python知识点: 列表解析/字典解析/集合解析/生成器解析
- Python里有趣的列表解析和生成器表达式