zoukankan      html  css  js  c++  java
  • 【Python基础到进阶】推导式

    列表推导式+字典推导式+集合推导式

    一、列表推导式

    基本格式:

    variable = [out_exp_res for out_exp in input_list if out_exp == 2]
        out_exp_res:  列表生成元素表达式,可以是有返回值的函数。
        for out_exp in input_list:  迭代input_list将out_exp传入out_exp_res表达式中。
        if out_exp == 2:  根据条件过滤哪些值可以。
    

    例一:使用[]生成list

    multiples = [i for i in range(30) if i % 3 is 0]
    print(multiples)
    # Output: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
    
    def squared(x):
        return x*x
    multiples = [squared(i) for i in range(30) if i % 3 is 0]
    print(multiples)
    #  Output: [0, 9, 36, 81, 144, 225, 324, 441, 576, 729]

    多层循环:

    # ======多层循环========
    # 1.列表推倒式
    l = [i*j for i in range(1,10) for j in range(1,10)]
    print(l)
    # 2.循环
    l = []
    for i in range(1,10):
        for j in range(1,10):
            s = i*j
            l.append(s)
    print(l)

    例二:使用()生成generator

    将列表推导式的[]改成()即可得到生成器。

    multiples = (i for i in range(30) if i % 3 is 0)
    print(type(multiples))      #  Output: <type 'generator'>
    # print(multiples.__next__())
    # print(multiples.__next__())
    # print(multiples.__next__())
    for i in multiples:
        print(i)

    二、字典推导式

    字典推导和列表推导的使用方法是类似的,只不中括号该改成大括号。直接举例说明:

    补充:

    '''
    补充:mcase.get('d',0) 好处是:避免了dict取不到值报错
     mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
    >>> mcase.get('a')
    10
    >>> mcase.get('a',0)        #有mcase['a'] 取出值 没有的话为0
    10
    >>> mcase.get('d',0)
    0
    '''
    

    例一:大小写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)
    #  Output: {'a': 17, 'b': 34}
    

    例二:快速更换字典的key和value

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

    三、集合推导式

    它们跟列表推导式也是类似的。 唯一的区别在于它使用大括号{}。
    squared = {x**2 for x in [1, 2, 3,4,5,6] if x>3}
    print(squared)
    # Output: {16, 25, 36}
    

      

    参考:https://www.cnblogs.com/tkqasn/p/5977653.html

    
    
    
  • 相关阅读:
    Hadoop命令解释
    sql的嵌套
    设计模式1 订阅者模式
    我的桌面515
    夜黑我也黑
    测试测试
    竖表转横表(支持多列)
    昨天晚上做了一个梦
    viewpage插件修改版增加 复制媒体文件地址
    PhireeNote 只有自动保存功能的简易记事本
  • 原文地址:https://www.cnblogs.com/XJT2018/p/11404659.html
Copyright © 2011-2022 走看看