迭代器
节省内存空间
1.for-in 语句在底层都是对一个 Iterator(迭代器) 对象进行操作的
2.使用了 yield 关键字的函数就是一个 Generator(生成器) 函数,被调用的时候生成一个可以控制自己运行的迭代器
3.调用使用了 yield 关键字的函数,最好用 for-in 语句
迭代器是一个对象,它实现了迭代器协议,一般需要实现如下两个方法
1. next 方法(返回容器的下一个元素)        2. __iter__ 方法(返回迭代器自身)
type(iter(range(10)))
Out[5]: listiterator

对一个对象调用 iter() 就可以得到它的迭代器。它的语法如下:
iter(obj)
如果传递一个参数给 iter() ,它会检查你传递的是不是一个序列,如果是,那么很简单:
根据索引从 0 一直迭代到序列结束。另一个创建迭代器的方法是使用类,一个实现了 __iter__() 和 next() 方法的类可以作为迭代器使用.
iter(func,sentinel)
如果是传递两个参数给 iter() ,它会重复地调用 func ,直到迭代器的下个值等于sentinel。
it = iter([1, 2, 3, 4, 5])
while True:
    try:
        x = next(it)    获得下一个值
    except StopIteration:    遇到StopIteration就退出循环(已经没有数据了)
        break

results matching ""

    No results matching ""