• python的各种推导式(列表推导式、字典推导式、集合推导式)


    推导式 comprehensions(又称解析式),是 python 的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列。

    1.列表推导式

    语法:

    • 变量名 = [表达式 for 变量 in 列表 for 变量 in  xxx]
    • 变量名 = [表达式 for 变量 in 列表 if 条件]

    语义:

    • 遍历出列表中的内容给变量,表达式根据变量值进行逻辑运算。或者遍历列表中的内容给变量,然后进行判断,符合的值在给表达式。

    练习1:快速创建一个包含元素1-10的列表

    list1 = [i for i in range(1, 11)]
    print(list1) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

    练习2:快速创建一个包含1-10之间所有偶数的列表

    list1 = [i for i in range(1, 11) if i % 2 == 0]
    print(list1) # [2, 4, 6, 8, 10]

    练习3:现在有一列表 lst = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] ,求出 1/4/7 和 1/5/9元素,思考如何取出

    lst = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    list1 = [lst[i][0] for i in range(len(lst))]
    print(list1) # [1, 4, 7]
    
    list2 = [lst[i][i] for i in range(len(lst))]
    print(list2) # [1, 5, 9]

    2.字典推导式

    • 字典推导式列表推导式思想的延续,语法差不多,只不过产生的是字典而已。

    练习1:大小写key合并

    mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
    mcase_frequency = {
        k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0)
        for k in mcase.keys()
        if k.lower() in ['a','b']
    }
    print(mcase_frequency) # {'a': 17, 'b': 34}

    练习2:快速更换key和value

    mcase = {'a': 10, 'b': 34}
    mcase_frequency = {v: k for k, v in mcase.items()}
    print(mcase_frequency)  # {10: 'a', 34: 'b'}

    3集合推导式

    • 集合推导式跟列表推导式非常相似,唯一区别在于用 { } 代替 [ ]

    练习1:

    squared = {x**2 for x in [1, 1, 2]}
    print(squared) # {1, 4}  集合去重复
  • 相关阅读:
    UVa
    UVa
    USACO
    USACO
    USACO
    Floyed算法学习
    POJ
    POJ
    codeforces 796C Bank Hacking
    codeforces 796B Find The Bone
  • 原文地址:https://www.cnblogs.com/heyuling/p/13431912.html
Copyright © 2020-2023  润新知