码迷,mamicode.com
首页 > 其他好文 > 详细

各自推导式

时间:2018-10-18 14:04:26      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:value   结果   生成器   字典   tor   集合推导式   object   集合   for   

1、生成器表达式 (i for i in range(10))
    返回一个生成器

    exp1:
    g = (i for i in range(10))
    print(g)
    执行结果:
    <generator object <genexpr> at 0x00000000020A4F48>

    for i in g:
        print(i)

    生成器表达式和列表推导式区别:
    1.括号不一样,生成器表达式为括号(),列表推导式为中括号[]
    2.返回的值不一样,生成器表达式返回 一个生成器 生成器节省内存 列表表达式 返回列表所有结果,


    老母鸡 = (‘鸡蛋%s‘%i for i in range(10) )
    print(老母鸡)
    for 鸡蛋 in 老母鸡:
        print(鸡蛋)

    10以内的数字的平方
    square = ( i**2 for i in range(10))
    for num in square:
        print(num)


2、列表推导式  [i for i in range(10)]
    [每一个元素或者是和元素相关的操作 for i in 可迭代数据]

    [ 满足条件的元素相关的操作 for 元素 in 可迭代数据类型 if 元素相关的条件] 筛选元素

    egg_list = []
    for i in range(10):
        egg_list.append(‘鸡蛋%s‘%i)
    print(egg_list)

    执行结果:
    [‘鸡蛋0‘, ‘鸡蛋1‘, ‘鸡蛋2‘, ‘鸡蛋3‘, ‘鸡蛋4‘, ‘鸡蛋5‘, ‘鸡蛋6‘, ‘鸡蛋7‘, ‘鸡蛋8‘, ‘鸡蛋9‘]

    列表推导式
    egg_list = [ ‘鸡蛋%s‘%i for i in range(10) ]
    print(egg_list)

    执行结果:
    [‘鸡蛋0‘, ‘鸡蛋1‘, ‘鸡蛋2‘, ‘鸡蛋3‘, ‘鸡蛋4‘, ‘鸡蛋5‘, ‘鸡蛋6‘, ‘鸡蛋7‘, ‘鸡蛋8‘, ‘鸡蛋9‘]

    列表推导式:[ i for i in range(10) ]

    exp:找到嵌套列表中名字含有两个‘e’的所有名字
    names = [[‘Tom‘, ‘Billy‘, ‘Jefferson‘, ‘Andrew‘, ‘Wesley‘, ‘Steven‘, ‘Joe‘],
         [‘Alice‘, ‘Jill‘, ‘Ana‘, ‘Wendy‘, ‘Jennifer‘, ‘Sherry‘, ‘Eva‘]]

    print([name for name_lst in names for name in name_lst if name.count(‘e‘) == 2])
    执行结果:
    [‘Jefferson‘, ‘Wesley‘, ‘Steven‘, ‘Jennifer‘]




    exp:
    30以内所有能被3整除的数
    [i for i in range(1,30) if i % 3 == 0]
    g = ( i for i in range(1,30) if i % 3 == 0)
    for i in g:
        print(i)

3、字典推导式

    例一:将一个字典的key和value对调


    mcase = {‘a‘: 10, ‘b‘: 34}
    mcase_frequency = {mcase[k]: k for k in mcase}
    print(mcase_frequency)

    {10: ‘a‘, 34: ‘b‘}

    exp2:合并大小写对应的value值,将k统一成小写
    mcase = {‘a‘: 10, ‘b‘: 34, ‘A‘: 7, ‘Z‘: 3}
    mcase_frequency = {k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0) for k in mcase.keys()}
    print(mcase_frequency)
    {‘a‘: 17, ‘b‘: 34, ‘z‘: 3}

4、集合推导式

    squared = {x**2 for x in [1, -1, 2]}
    print(squared)

    {1, 4}

  

各自推导式

标签:value   结果   生成器   字典   tor   集合推导式   object   集合   for   

原文地址:https://www.cnblogs.com/Felix-DoubleKing/p/9809871.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!