迭代器
作用:简化循环的代码并可以节约内存
是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退
迭代器有两个基本的方法:iter() 和 next()。
生成器
作用:节约大量内存
使用了 yield 的函数被称为生成器、生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器
原理:在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行
区别
生成器是迭代器的一种实现,所有生成器都是迭代器,因为生成器完全实现了迭代器接口,迭代器用于从集合中取出元素,而生成器用于“凭空”生成元素,生成器相较于迭代器更为简洁,它能极大程度的简化代码,使得执行流程更为清晰。
迭代器需要我们定义一个类来实现相关的方法才能构造一个灵活的迭代器,而生成器则只需要在普通的函数中加入一个yield关键字,yield 语句的作用就是把一个函数变成一个生成器(generator),生成器的出现使得python能类似于协同程序(协同程序的概念一开始有介绍)工作。
网友评论