• python学习笔记 day14 生成器表达式


    列表推导式

    之前生成一个满足条件的列表我们可以使用for循环,然后往列表中append元素,现在可以不用那么麻烦,直接一个表达式就可以搞定:

    L=['你好哇%d'% i for i in range(10)]
    print(L)

    规则就是: for 是控制循环变量的,前面写上你要生成的这个列表的组成元素(就是后面的循环变量的某种组合形式)

    运行结果:

    再比如你要生成一个0-9范围内 每个数字立方的列表,就可以这样写:

    L=[i**3 for i in range(10)]
    print(L)

    运行结果:

    生成器表达式

    前面之所以先介绍列表推到式,就是因为生成器表达式跟它真的太像了!我们先来感受一下:

    g=(i for i in range(5))
    print(g)   # g是一个生成器
    # for i in g:   #可以使用for循环一次来打印出该生成器内的值
    #     print(i)
    print(g.__next__())  #当然也可以使用g.__next__()方法一个一个打印该生成器内的值~
    print(g.__next__())
    print(g.__next__())
    print(g.__next__())
    print(g.__next__())

    运行结果:

    如果想要使用生成器表达式得到一个生成器,要去里面的元素是0-9数字的平方:

    g=(i**2 for i in range(10))
    print(g)                 #生成器表达式得到的是一个生成器
    # for i in g:            #可以使用for循环来获取生成器内的值
    #     print(i)
    print(g.__next__())      #也可以使用.__next__()方法来获取
    print(g.__next__())
    print(g.__next__())
    print(g.__next__())
    print(g.__next__())
    print(g.__next__())
    print(g.__next__())
    print(g.__next__())
    print(g.__next__())
    print(g.__next__())

    运行结果:

    对比可以发下,生成器表达式和列表推导式的区别为:

    1. 形式不同,列表推导式最外层采用的是 [] -中括号,而生成器表达式采用的是()---圆括号;

    2. 两者的返回值不同,列表推导式返回的是一个list,而生成器表达式返回的是一个生成器,所以列表推导式一次性返回这个列表(包含列表的所有值),而生成器只有当调用__next__()方法时才会得到值,所以更节省内存空间;

    talk is cheap,show me the code
  • 相关阅读:
    安装maven报错及解决
    Servlet包导入
    理解SQL SERVER的逻辑读,预读和物理读以及索引
    第六章(函数)编程题二
    第六章(函数)编程题一
    第五章(使用对象) 编程题一
    第三章(循环) 编程题 4
    第四章(数组) 编程题 1
    第三章(循环) 编程题 3
    低功耗蓝牙 ATT/GATT/Service/Characteristic 规格解读
  • 原文地址:https://www.cnblogs.com/xuanxuanlove/p/9591402.html
Copyright © 2020-2023  润新知