python中的解析
Python支持各种解析(comprehension)操作,比如列表解析、集合解析、元组解析、字典解析。它们根据某些元素来创建(推导)出一个新的列表、集合、元组、字典等。所以有的地方也称为推导,比如列表推导、集合推导等。
下面是一个列表解析的示例:
1 >>> [ i*2 for i in range(10) if i % 2 == 0 ]
2 [0, 4, 8, 12, 16]
这里是列表解析,因为使用的中括号[ xxxx ],它表示根据条件推导出一个新的列表。Python中几种内置类型的解析规则为:
- 如果使用的是中括号,表示列表解析
- 如果使用的是大括号,表示集合解析
- 如果使用的是大括号,且里面的元素是key:value模式,表示字典解析
注意:如果使用的是括号,表示的是生成器表达式,而不是解析。
例如:
1 # 集合解析
2 >>> { i*2 for i in "abcd"}
3 {'aa', 'cc', 'dd', 'bb'}
4
5 # 字典解析
6 >>> { k:v for k,v in zip(("one","two","three"),(1,2,3)) }
7 {'one': 1, 'two': 2, 'three': 3}
8 >>> { k: k*2 for k in "abcd" }
9 {'a': 'aa', 'b': 'bb', 'c': 'cc', 'd': 'dd'}
在学习过程中有什么不懂得可以加我的
python学习交流扣扣qun,×××
群里有不错的学习视频教程、开发工具与电子书籍。
与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容
当然,Python中还有其它解析模式。
数学概念中的解析
计算机语言中的解析来自于数学概念中的集合描述(对应于集合解析)。如下图:
将此与下面的列表解析进行对应:
[ i * 2 for i in range(10) if i % 2 == 0 ]
其中:
- x ∈ N表示的是装元素的容器,这个容器里的元素是解析时被迭代的对象
- 这对应于列表解析中的range(10),对于Python来说,只要是可迭代的数据对象,都可以作为元素的提供容器
- x是变量,是容器中的元素
- 对应于列表解析中的i
- x² > 3表示的是谓词,是可选的条件判断式,用来筛选解析过程中的符合条件的元素
- 这对应于列表解析中的if i % 2 == 0,注意,谓词部分是可选的
- 2 * x表示的是外部表达式,用来生成新的列表/集合/字典/元组中的元素
- 对应于列表解析中的i * 2
- {}意味着外部表达式的元素所存放的容器是集合容器
- 对应于列表解析中的[],表示新生成的元素是列表中的元素
觉得文章还可以的话不妨收藏起来慢慢看,有任何意见或者看法欢迎大家评论!