• 10-8 生成器的表达式、各种推导式


    egg_list = []
    for i in range(6):    #列表推导式
        egg_list.append('鸡蛋%s'%i)
    print(egg_list) #结果:['鸡蛋0', '鸡蛋1', '鸡蛋2', '鸡蛋3', '鸡蛋4', '鸡蛋5']
    
    egg_list = ['鸡蛋%s'%i for i in range(5)] #列表推导式
    print(egg_list)
    
    列表推导式
    print([i for i in range(10)])   #结果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    print([i*i for i in range(10)])    #结果:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    

    生成器表达式

    g = (i for i in range(10))
    print(g)    #结果:<generator object <genexpr> at 0x0221DCC0>
    for i in g:
        print(i)
    
    括号不一样,返回的值不一样===生成器表达式几乎不占用内存
     g = (i*i for i in range(10))
     g.__next__()
    

      

    各种推导式

    [每一个元素或者是与元素相关的操作 for 元素 in 可迭代类型]    ----遍历后挨个处理
    [满足元素条件相关的操作 for 元素 in 可迭代类型 if 元素相关条件] ----筛选功能
    print([i for i in range(30) if i%3==0]) #结果[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
    print([i*i for i in range(30) if i%3==0]) #结果[0, 9, 36, 81, 144, 225, 324, 441, 576, 729]
    

    多层嵌套

    names = [['Tom','Jack','hdjseej'],
             ['Jenefer','Cheryol','eeeejjk']]
    result = [name for lst in names for name in lst if name.count('e')>=2]
    print(result)   #结果:['hdjseej', 'Jenefer', 'eeeejjk']
    

    字典推导式

    #1.将key与value对调
    dic = {'a':10,'b':20}
    reverse = {dic[k]: k for k in dic}
    print(reverse)  #结果:{10: 'a', 20: 'b'}

    #2.合并大小写所对应的value值,将k统一成小写
    dic = {'a':10,'b':20,'A':3,'Z':4}
    dic_new = {k.lower():dic.get(k.lower(),0)+dic.get(k.upper(),0) for k in dic}
    print(dic_new)  #结果:{'a': 13, 'b': 20, 'z': 4}

    集合推导式-----结果自动去重

    sq = {x*x for x in [1,-1,2]}
    print(sq)   #结果:{1, 4}
    

      

  • 相关阅读:
    Codevs 2597 团伙(并查集)
    Codevs 1074 食物链 2001年NOI全国竞赛
    Bzoj 3831 [Poi2014]Little Bird
    Codevs 4600 [NOI2015]程序自动分析
    Codevs 3287 货车运输 2013年NOIP全国联赛提高组(带权LCA+并查集+最大生成树)
    段落排版--中文字间距、字母间距
    段落排版--行间距(行高)
    段落排版--缩进
    文字排版--删除线
    文字排版--下划线
  • 原文地址:https://www.cnblogs.com/Cheryol/p/9752475.html
Copyright © 2020-2023  润新知