列表解析

列表解析是python总要的语法糖,列表解析的速度比for in 迭代快

  • 基础语法
ret_list = [expression for item in iterator]

等价代码如下:

ret_list= []
for  item in iterator:
    ret_list.append.(expression)
  • 带条件的类表解析
[x + 1 for x in range(10) if x % 2 == 0]

等价代码如下:

lst = []
for x in rang(10):
    if x % 2 == 0:
        lst.append(x + 1)
  • 多个条件的类表解析
[x + 1 for x in range(10) if x % 2 == 0 if x > 2]

等价代码如下:

lst = []
for x in rang(10):
    if x % 2 == 0:
        if x > 2:
            lst.append(x + 1)

相当于没多一个if判断,就多一层嵌套

  • 多个列表,可求笛卡尔积
ret = [expression for x in X for y in Y]

多列表的情况下也可以添加条件,类似于上面提到的。

X = [1, 2, 3, 4, 5]
Y = [6, 7, 8, 9, 0]
[(x, y) for x in X for y in Y]

等价代码如下:

X = [1, 2, 3, 4, 5]
Y = [6, 7, 8, 9, 0]
ret = []
for x in X:
    for y in Y:
        ret.append((x, y))

列表解析的格式也适用于集合解析

  • 基础语法
ret_set = {expression for item in iterator}

等价代码如下:

ret_set  = set()
for item in iterator:
    ret_set.add(item)

多条件、多列表的使用方式跟列表的类似。

列表解析的格式也适用于字典解析

  • 基础语法
ret_dict = {expression_K: expression_V for item in iterator}

等价代码如下:

ret_dict  = dict()
for item in iterator:
    ret_dict.update({expression_K: expression_V})

多条件、多列表的使用方式跟列表的类似。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容