请简述生成器与迭代器的区别。
请简述生成器与迭代器的区别。
正确答案:迭代器是遵循迭代协议的对象。用户可以使用()iter()以从任何序列得到迭代器(如list,tuple,dictionary,set等)。另一个方法则是创建一个另一种形式的迭代器――generator。要获取下一个元素,则使用成员函数next()(Python2)或函数next()function(Python3)。当没有元素时,则引发StopIteration此例外。若要实现自己的迭代器,则只要实现next()(Python2)或()next()(Python3);
生成器(Generator),只是在需要返回数据的时候使用yield语句。每次next()被调用时,生成器会返回它脱离的位置(它记忆语句最后一次执行的位置和所有的数据值)
区别:生成器能做到迭代器能做的所有事,而且因为自动创建iter()和next()方法,生成器显得特别简洁,而且生成器也是高效的,使用生成器表达式取代列表解析可以同时节省内存。除了创建和保存程序状态的自动方法,当发生器终结时,还会自动抛出StopIteration异常。
- 上一篇:请简述数据工程项目流程。
- 下一篇:请简述函数装饰器的作用。