迭代器和生成器


    迭代器:
        dir() 查看数据可以执行的方法
        Iterable: 在数据内部存在 __iter__()  可以被迭代的内容.
        Iterator: 迭代器. 存在__iter__() 还存在__next__()
        还可以引入collections 中的Iterable和Iterator
        isinstance(对象, 类型) 可以判断xxx对象是否是xxx类型
        特征:
            1. 节省内存
            2. 惰性机制(只有执行__next__()才会取值)
            3. 只能向前.
        for循环内部使用的是迭代器
            lst = [1,2,3]
            it = lst.__iter__()
            while 1:
                try:
                    it.__next__()
                except StopIteration:
                    break
##################################################################################################
生成器:
  1. 生成器
        生成器的本质就是迭代器.
        生成器由生成器函数来创建或者通过生成器表达式来创建
    2. 生成器函数
        生成器函数:在函数中return换成yield. 这个函数就是生成器函数
        def func():
            yield
        gen = func() 函数并不会被执行, 而是创建一个生成器对象
        取值:
            gen.__next__() 下一个
            gen.send() 可以给上一个yield传值, 第一次执行不能用send()
        特性:
            1. 节省内存
            2. 惰性机制
            3. 只能向前
    3. 各种推导式
        1.列表推导式: [结果 for循环 if条件]
        2.字典推导式: { key: value for循环 if条件}
        3.集合推导式: {key for循环 if条件}
    4. 生成器表达式(笔试题)
        (结果 for循环 if条件)
        惰性机制
        记录在内存中的一段代码.

posted on 2018-09-18 17:22  Informatik  阅读(79)  评论(0编辑  收藏  举报

导航