zoukankan      html  css  js  c++  java
  • Python生成器

    生成器是可以当作iterator使用的特殊函数。它有以下优点:
    1. 惰性求值;
    2. 在处理大的列表时不需要一次性加载全部数据,可以减小内存使用;
    除非特殊的原因,应该在代码中使用生成器。

    生成器(generator) vs 函数(function)
    生成器和函数的主要区别在于函数return a value, 生成器yield a value同时 记录以便在下次调用时从上次的状态下恢复执行。

    生成器(generator) vs 迭代器(iterator)
    * 迭代器是一个更一般的概念,它是一个有next方法和返回self的__iter__方 法的类。
    * 每个生成器是一个迭代器,但迭代器不一定是生成器,生成器是有记录上次 执行状态的迭代器。从这点上看生成器有点像闭包,只是它记录的不是数据 的状态,记录的是执行过程中的状态。

    生成器(generator) vs 续延(coninuations) 与生成器相比,续延更加灵活,续延允许你调用不同状态的执行过程,而不像生 成器这样直接返回。

    创建生成器
    在python可以使用以下方式创建生成器:
    1.使用yield

    def Generator(x,y):
        for i in xrange(x):
            for j in xrange(y):
                yield(i, j)

    2.使用generator expression

    def Generator(x, y):
        return ((i, j) for i in xrange(x) for j in xrange(y))
  • 相关阅读:
    Kibana
    Filebeat使用
    leetcode刷题笔记七十三题 矩阵置零
    leetcode刷题笔记七十二题 编辑距离
    leetcode刷题笔记七十一题 简化路径
    leetcode刷题笔记七十题 爬楼梯
    leetcode刷题笔记六十九题 X的平方根
    python 冒泡算法
    hive 函数
    Task07:类、对象与魔法方法(3天)
  • 原文地址:https://www.cnblogs.com/arcticant/p/4593351.html
Copyright © 2011-2022 走看看