列表解析

作者: Shun2018 | 来源:发表于2018-04-02 20:52 被阅读0次

    列表解析是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})
    

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

    相关文章

      网友评论

        本文标题:列表解析

        本文链接:https://www.haomeiwen.com/subject/tboxhftx.html