zoukankan      html  css  js  c++  java
  • python 三元运算、列表推倒式、字典推倒式、生成器生成式

    1、三元运算

    name=input('姓名>>: ')
    res='SB' if name == 'alex' else 'NB'
    print(res)

    2、列表推倒式

    #1、示例
    egg_list=[]
    for i in range(10):
        egg_list.append('鸡蛋%s' %i)
    
    egg_list=['鸡蛋%s' %i for i in range(10)]

    zip的用法

    l = [1,2,3]
    
    b = (4,5,6)
    
    c = {7,8,9}
    
    a = zip(l,b,c)
    
    print(list(a))
    

      

    结果:

    [(1, 4, 8), (2, 5, 9), (3, 6, 7)]

    3、字典推倒式

    k = ['egon',18,'male']

    v = ['name','age','sex']

    d = {v:k for v,k in zip(k,v)}

    print(d)

    4、生成器生成式

    通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。

    所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器(Generator)。

    要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:

    #1、把列表推导式的[]换成()就是生成器表达式
    
    #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',]

    案例:我要统计文件每行个数最大的

    with open('a.txt',encoding='utf-8') as f:
        nums=(len(line) for line in f)
      #max自动有一个生成器next的方法 print(max(nums))

    #下面会报错 print(max(nums)) print(max(nums))

      

     



  • 相关阅读:
    autocomplete
    ORM组件 ELinq (一)首航之旅
    ORM组件 ELinq 系列
    Jet 驱动对CRUD的支持
    ORM组件 ELinq 更新日志
    年度开源力作ORM组件 ELinq诞生了
    Excel 连接字符串详解
    国内开源ORM组件 ELinq正式版发布
    Firebird 问题总结
    ORM组件 ELinq (二) 映射配置之Table
  • 原文地址:https://www.cnblogs.com/wuheng-123/p/9178826.html
Copyright © 2011-2022 走看看