python之生成器与迭代器

生成器

列表生成式:li = [i for i in range(10)]

将列表生成式中[]换成()即为生成器generator

生成器保存的对象不是具体的数,而是一种算法,一种推导式,调用__next__()可以计算出下一个元素,没有更多的元素时,抛出StopIteration的错误

迭代器

可以直接作用于for循环对象成为可迭代对象,即Iterable,可迭代对象一类是集合数据类型,如listtupledictsetstr等;另一类一类是generator

包括生成器和带yield的generator function;

可以使用isinstance()判断一个对象是否是Iterable对象;

生成器都是迭代器;

总结

凡是可作用于for循环的对象都是Iterable类型;

可以被next()方法调用,并不断返回下一个值的对象成为迭代器对象;

凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;

集合数据类型如listdictstr等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。

原文地址:https://www.cnblogs.com/Json28/p/10512173.html