python生成器回顾


python生成器(generator)

  • 生成器是一种使用普通函数语法定义的迭代器
  • 包含yield语句的函数都是生成器,它是一个不断产生值的函数
  • 生成器每次使用yield产生一个值后,函数都将冻结,即在此处停止执行,等待重新被唤醒。被唤醒后从停止的地方开始继续执行

生成器推导(生成器表达式)

* 使用圆括号()创建一个生成器推导 *,它创建了一个可迭代的对象
使用next()函数可以获得生成器推导的下一个返回值

g = (i**2 for i in range(10))

simple generator

** demo_1 **

斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到

** demo_2_generator **

recursive generator

处理多层嵌套列表

def flagtten(nested):
    try:
        for sublist in nested:
            for element in flagtten(sublist):
                yield element
    except TypeError:#处理迭代单个对象引起的typeerror异常
        yield nested

def main():
    s = list(flagtten([1,[2,3]]))
    print(s)


main()
def flagtten(nested):
    try:
        #不迭代类似于字符串的对象
        try:
            nested + ''
        except TypeError:
            pass
        else:
            raise TypeError
        for sublist in nested:
            for temp in flagtten(sublist):
                yield temp
    except TypeError:
        yield nested

def main():
    s = list(flagtten(["haha",["shan","san"]]))
    print(s)


main()



文章作者: ShanSan
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ShanSan !
 上一篇
C++11特性-1 C++11特性-1
c++11特性列表初始化 使用花括号来初始化对象 使用列表初始化内置类型的变量,可能会存在丢失信息的风险 auto类型说明符号decltype类型说明符auto auto让编译器通过初始值来推算变量的类型 使用auto也能在一条语句中声
2018-11-05
下一篇 
Scrapy爬虫框架 Scrapy爬虫框架
网络爬虫框架scrapy(配置型爬虫) 什么是爬虫框架? 爬虫框架是实现爬虫功能的一个软件结构和功能组件集合 爬虫框架是个半成品,帮助用户实现专业网络爬虫 scrapy框架结构(“5+2”结构) spider: 解析downloa
2018-10-31
  目录