Python解析式
Python解析式
在python中经常能够看到形如ret = [x ** 2 for x in lst]
这样的赋值语句,对于从C++转到python的人不太容易理解这种for循环的使用,这就是python为了简洁而发明的新语法。python解析式有以下优点:
- 代码简洁,可读性强
- 效率比普通迭代稍高
python的解析式具体分为以下四种:
- 列表解析式
- 生成器解析式
- 集合解析式
- 字典解析式
下面分别介绍这四种解析式的使用。
列表解析式
列表解析式的形式
[expr for e in iterator]
可以发现效率是要稍高一点,最主要的还是代码简洁。
列表解析式可以和if
语句一起使用
例如筛选出列表lst
中的偶数:
列表解析式可以像for
循环一样使用if
语句。
- 带多个if语句的,都可以转化为条件的逻辑运算, 所以一般来说,不会带多个if语句
列表解析式的for
语句可以嵌套。
if
语句的特殊用法
单行if语句的写法和列表解析式很像。
表达式形式:x if cond else y
if
和else
必须同时存在。
下面以偶数求平方,奇数求立方为例进行演示
生成器解析式
列表解析式返回的是一个列表,而生成器解析式返回的是一个解析式。列表解析式的中括号变成小括号就是生成器解析式了
列表解析式和生成器解析式的选择
- 需要用下标访问的时候,用列表解析式
- 只需要对结果迭代的时候,优先使用生成器解析式
集合解析式
将列表解析式的中括号换成大括号就是集合解析式了。
字典解析式
字典解析式使用的也是大括号,但是和集合解析式不同的是在expr
处使用的不是单个元素而是k,v
对。
这四种解析式中使用最广泛的还是列表解析式,会经常有一些很巧妙的用法。
Python解析式
https://suncle.me/posts/2607945880/