• 三元表达式、生成式、生成器表达式


    三元表达式

    三元表达式是python为我们提供的一种简化代码的解决方案,语法如下

    res = 条件成立时返回的值 if 条件 else 条件不成立时返回的值

    示例:

    #原代码
    def max2(x,y):
        if x > y:
            return x
        else:
            return y
    
    res = max2(1,2)
    
    #用三元表达式可以一行解决
    x=1
    y=2
    res = x if x > y else y # 三元表达式

    生成式

    l = ['alex_dsb', 'lxx_dsb', 'wxx_dsb', "xxq_dsb", 'egon']
    #
    1、列表生成式 # 把所有小写字母全变成大写 # new_l=[name.upper() for name in l] # print(new_l) # 把所有的名字去掉后缀_dsb # new_l=[name.replace('_dsb','') for name in l] # print(new_l) # 2、字典生成式 # keys=['name','age','gender'] # dic={key:None for key in keys} # print(dic) # items=[('name','egon'),('age',18),('gender','male')] # res={k:v for k,v in items if k != 'gender'} # print(res) # 3、集合生成式 # keys=['name','age','gender'] # set1={key for key in keys} # print(set1,type(set1))

    生成器表达式

    创建一个生成器对象有两种方式,一种是调用带yield关键字的函数,另一种就是生成器表达式,与列表生成式的语法格式相同,只需要将[]换成(),即:

    (expression for item in iterable if condition)
    # 生成器表达式
    # g=(i for i in range(10) if i > 3)
    # !!!!!!!!!!!强调!!!!!!!!!!!!!!!
    # 此刻g内部一个值也没有
    
    # print(g,type(g))
    
    # print(g)
    # print(next(g))
    # print(next(g))
    # print(next(g))
    # print(next(g))
    # print(next(g))
    # print(next(g))
    # print(next(g))
    
    #统计文件中的字符个数
    with open('笔记.txt',mode='rt',encoding='utf-8') as f:
        # 方式一:
        # res=0
        # for line in f:
        #     res+=len(line)
        # print(res)
    
        # 方式二:
        # res=sum([len(line) for line in f])
        # print(res)
    
        # 方式三 :效率最高
        # res = sum((len(line) for line in f))
        # 上述可以简写为如下形式
        res = sum(len(line) for line in f)
        print(res)
  • 相关阅读:
    网络流最近的一点总结
    POJ 2195 Going Home 费用流 最小费用流
    [置顶]opencv图像处理3opencv下使用滑动条
    VC6.0图形处理9轮廓提取
    VC6.0图形处理8Hough变换(下)
    VC6.0图形处理10腐蚀膨胀
    opencv图像处理6网球检测
    opencv图像处理1IPlImage结构分析
    VC6.0图形处理8Hough变换(上)
    opencv图像处理5车辆检测
  • 原文地址:https://www.cnblogs.com/baicai37/p/12565117.html
Copyright © 2020-2023  润新知