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

    三元表达式

    x,y=10,20
    
    res=x if x>y else y
    
    print(res) #20

    列表推导式

    l=[]
    
    for x in range(5):
    
      l.append(x*2)
    
     
    
    l=[x*2 for x in range(5)]
    
    l=[x*2 for x in range(5) if x>1]

    优点:方便,改变了编程习惯,可称之为声明式编程

     字典生成式

    #字典生成式
    # s1='hello'
    # l1=[1,2,3,4,5]
    
    # res=zip(s1,l1)
    # print(res)
    # print(list(res))
    
    
    # keys=['name','age','sex']
    # values=['egon',18,'male']
    
    # res=zip(keys,values)
    # print(list(res))
    # print(list(res))
    # d={}
    # for k,v in zip(keys,values):
    # d[k]=v
    # print(d)
    
    # keys=['name','age','sex']
    # values=['egon',18,'male']
    # d={k:v for k,v in zip(keys,values)}
    # print(d)
    
    info={'name': 'egon', 'age': 18, 'sex': 'male'}
    
    keys=info.keys()
    # print(keys)
    # iter_keys=keys.__iter__()
    # values=info.values()
    # print(values)
    
    # d={k:v for k,v in zip(keys,values)}
    # print(d)
    
    # s={i for i in range(10)}
    # print(s,type(s))

    生成器表达式

    #1、把列表推导式的[]换成()就是生成器表达式
    g=(i for i in range(10))
    print(g)
    
    print(next(g))
    print(next(g))
    
     
    
    with open('a.txt',encoding='utf-8') as f:
        nums=(len(line) for line in f)
        print(max(nums))
    
      print(max(nums))    #报错 ,nums生成器值取完了 ValueError: max() arg is an empty sequence
    print(max(nums))        #报错 , 文件关闭 nums生成器无法取值 ValueError: max() arg is an empty sequence
    #2、示例:生一筐鸡蛋变成给你一只老母鸡,用的时候就下蛋,这也是生成器的特性
    >>> chicken=('鸡蛋%s' %i for i in range(5))
    >>> chicken
    <generator object <genexpr> at 0x10143f200>
    >>> next(chicken)
    '鸡蛋0'
    >>> list(chicken) #因chicken可迭代,因而可以转成列表
    ['鸡蛋1', '鸡蛋2', '鸡蛋3', '鸡蛋4',]
    #3、优点:省内存,一次只产生一个值在内存中


     review

        1、生成器
            def func():
                yield
            g=func()
            next(g)
    
            x=yield
        2、三元表达式
            res=x if 条件 else y
        3、列表推导式,字典生成式,生成器表达式
            l=[表达式 for i in 可迭代对象 if 条件]
            g=(表达式 for i in 可迭代对象 if 条件)
            d={k:v for i in 可迭代对象 if 条件}
        4、max,zip
            max(可迭代对象)
            生成器=zip(可迭代对象1,可迭代对象2)
                g=zip('hello',[1,2,3])
                # print(g)
                print(list(g))
  • 相关阅读:
    Flink 状态生命周期
    jpa使用@CollectionTable创建表
    Java的四种引用---强软弱虚
    ThreadLocal与内存泄露
    Flink 1.11 Table API 实现kafka到mysql
    FLIink 1.11 SQL 构建一个端到端的流式应用
    Flink1.11编译
    Flink运行yarn-session报错 java.lang.NoClassDefFoundError: org/apache/hadoop/yarn/exceptions/YarnException
    欢迎订阅AI科技导读微信公众号,获取人工智能的最新技术解读教程!
    深度学习深刻理解和应用--人工智能从业人员必看知识
  • 原文地址:https://www.cnblogs.com/hanbowen/p/9177776.html
Copyright © 2011-2022 走看看