python的迭代器和生成器
在python中,大多数容器对象都使用for来进行遍历。
那么啥是迭代器呢?
百度百科里面说:迭代器是一种对象,它能够用来遍历容器对象的所有元素,每个迭代器对象代表着容器中一个确定的地址。
python中的迭代器不仅仅可以迭代序列类型,还可以迭代非序列类型。包括用户定义的对象。
迭代器的用法在python中普遍而且统一。for语句在容器对象中调用iter()函数,这个函数会返回一个 定义了next()方法的迭代器对象。它在容器中逐一访问元素,没有后续元素,next()就会抛出一个异常,告知for循环结束。
这样的话就很好的可以给自己的类定义一个迭代器了。
比如:
class className:
def __iter__(self):
return self
def next(self):
…….
生成器:
生成器是这样一个函数,它记住上一次返回时在函数体中的位置。对生成器函数的第二次(或第 n 次)调用跳转至该函数中间,而上次调用的所有局部变量都保持不变
生成器是创建迭代器的简单而强大的工具。
需要返回数据时候使用yield语句。
每次调用next()时,生成器回复它脱离的位置。