Python的各种解析操作,和数学概念中的解析有何联系?

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中还有其它解析模式。

《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
  • {}意味着外部表达式的元素所存放的容器是集合容器
  • 对应于列表解析中的[],表示新生成的元素是列表中的元素

觉得文章还可以的话不妨收藏起来慢慢看,有任何意见或者看法欢迎大家评论!

    原文作者:刘智民
    原文地址: https://blog.51cto.com/14568144/2444883
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞