前言
一般认为的python解析器如下:
[for i in range(10)]
事实上,这只是其中的一种。
解析式这个大概念可以分为以下几种:
- 列表解析式
- 生成器解析式
- 集合解析式
- 字典解析式
列表解析式
如下对一个列表里所有的数值求平方就是列表解析式:
>>> lst = list(range(10))
>>> ret = []
>>> for x in lst:
... ret.append(x ** 2)
...
>>> ret
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>>
>>> ret = [x ** 2 for x in lst]
>>> ret
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
定义
通用语法:[expr for e in iterator]
再这个表达式里面我们可以使用我们的元素,这样子的列表解析式和我们的for循环是等价的。
列表解析式的优点:
- 代码简洁,可读性高
- 效率比普通的迭代稍高,但并不是数据量级上的,只是稍微有一点。
解析式变体
如下为带if语句的列表解析
>>> lst = list(range(10))
&g