zoukankan      html  css  js  c++  java
  • 三元表达式、列表推导式、生成器表达式

    一、三元表达式

    def max2(x,y):
        if x > y:
            return x
        else:
            return y
    
    # res =条件成立时运行的表达式 if 条件 else 条件不成立时运行的表达式
    x=11
    y=22
    
    res=x*12 if x > y else y*100
    print(res)
    

    二、列表推导式

    #1、示例
    egg_list=[]
    for i in range(10):
        egg_list.append('鸡蛋%s' %i)
    
    egg_list=['鸡蛋%s' %i for i in range(10)]
    
    #2、语法
    [expression for item1 in iterable1 if condition1
    for item2 in iterable2 if condition2
    ...
    for itemN in iterableN if conditionN
    ]
    类似于
    res=[]
    for item1 in iterable1:
        if condition1:
            for item2 in iterable2:
                if condition2
                    ...
                    for itemN in iterableN:
                        if conditionN:
                            res.append(expression)
    
    #3、优点:方便,改变了编程习惯,可称之为声明式编程
    

    三、生成式

    l=[]
    for i in range(1,6):
        if i > 3:
            l.append(i)
    
    print(l)
    # 1、列表生成式
    res=[i for i in range(1,6) if i > 3]
    print(res)
    
    # 2、集合生成式
    res={i for i in range(1,6) if i > 3}
    print(res,type(res))
    
    # 3、字典生成式
    items=[("name","egon"),('age',18),('gender','male')]
    dict(items)
    res={k:v for k,v in items if k != "age"}
    print(res,type(res))
    
    # 4、生成器表达式
    res = (i for i in range(1, 6) if i > 3)
    print(res)
    
    print(next(res))
    print(next(res))
    print(next(res))
    
    def my_sum(nums,res=0):
        for num in nums:
            res+=num
        return res
    

    四、了解部分

    1、map函数
    salaries=[1000,2000,3000,4000,5000]
    res=map(lambda num:num*12,salaries)
    print(res)
    print(list(res))
    
    print((num*12 for num in salaries))
    
    2、filter函数
    names=['egon',"alex_dsb","liuqingzheng_dsb"]
    res=filter(lambda n:n.endswith("dsb"),names)
    print(res)
    
    print([name for name in names if name.endswith('dsb')])
    
    3、reduce函数
    from functools import reduce
    
    res=reduce(lambda x,y:x+y,[1,2],100)
    print(res)
    了解:map、filter、reduce
  • 相关阅读:
    NVelocity用法
    LINQ to SQL语句(1)之Where
    CSS content内容生成技术以及应用
    LINQ to SQL语句(4)之Join
    LINQ to SQL语句(3)之Count/Sum/Min/Max/Avg
    本页的SQL例句全部懂了,你的数据库开发所需知识就够用了
    oracle 导入导出命令
    MTracer中文破解版下载 MTracer2.1
    在Powerdesigner或者ER/Studio中使用宏把Attribute复制到Definition
    利用DDTek不安装客户端访问数据库
  • 原文地址:https://www.cnblogs.com/datatool/p/13508576.html
Copyright © 2011-2022 走看看