python返回迭代器和返回列表有什么区别?
python返回迭代器和返回列表有什么区别?
-
Python中生成器能做到迭代器能做的所有事,而且因为自动创建了__iter__()和next()方法,生成器显得特别简洁,而且生成器也是高效的,使用生成器表达式取代列表解析,同时节省内存。除了创建和保持程序状态的自动生成,当发生器终结时,还会自动跑出StopIterration异常。
列表、元组、字典、字符串都是可迭代对象。
数字、布尔值都是不可迭代的。
下面分别来说说这两者的具体区别:
1、迭代器
迭代器对象要求支持迭代器协议的对象。在Python中,支持迭代器协议就是实现对象的__iter__()和next()方法。其中__iter__()方法返回迭代器对象本身;next()方法返回容器的下一个元素,在结尾时引发StopIteration异常。
下面用个简单的列表来说迭代器的用法:

看完上面代码,我想很多人纳闷列表怎么可以有一个迭代器。由于面试题篇幅有限,大家如果想了解可迭代对象怎么可以获取迭代器呢?
2、生成器
生成器(generator)就是一个函数,它提供了一种实现迭代器协议的便捷方式。生成器与普通函数的区别在于它包含 yield 表达式,并且不需要定义 __iter__()和__next__()。
生成器是一种惰性的序列,如果我们需要创建一个 0~1000000000 的序列,这样大的序列创建出来会占用比较多的内存,生成器就是为了解决这样的问题 。
下面用个简单的例子来说生成器的用法:

如果对于有不认同的意见,大家可以在关注我指出和补充,欢迎留言。
2020-05-29 22:09:27 -
python迭代器是一种机制;列表是一种数据结构。
迭代模式提供一种顺序访问容器对象中各个元素的方法,而又不需要暴露该对象的内部实现。迭代器(Iterator)是按照一定的顺序对一个或多个容器中的元素从前往后遍历的一种机制,如对数组的遍历就是一种迭代遍历。Python 是一种简洁明了的语言,迭代器已经融入其语言本身的特性了,Python 中的 for 循环本身就是一个迭代的过程,也是最简单易用的迭代方式。
2020-05-29 21:26:50