Python中的迭代器与可迭代:iter()和next()

在Python中,迭代器(Iterator)是可以迭代的对象,通过next()方法每次返回下一个元素。Python中的大多数内置容器,如list/tuple/string...都是可迭代的(iterable)
iter()与next()

一种自动迭代的更优雅的实现是使用for循环

for循环实现迭代

for循环的内部实现为:

# create an iterator object from that iterable
iter_obj = iter(iterable)

# infinite loop
while True:
    try:
        # get the next item
        element = next(iter_obj)
        # do something with element
    except StopIteration:
        # if StopIteration is raised, break from loop
        break

可以看出,for循环是一个通过捕捉StopIteration异常的While循环

在Python中,迭代器(Iterator)和可迭代(iterable)的区别是,迭代器支持iter()和next()方法;可迭代支持iter()方法。可迭代只能在for循环中获得元素,迭代器还可以用next()方法获取元素。
list/truple/map/dict都是可迭代,但不是迭代器;这些数据的大小是确定的;迭代器不是,迭代器不知道要执行多少次,所以可以理解为不知道有多少个元素,每调用一次next(),就会往下走一步。

判断是不是可以迭代,用Iterable
判断是不是可以迭代
判断是不是迭代器,用Iterator
判断是不是迭代器

凡是可以for循环的,都是Iterable
凡是可以next()的,都是Iterator

集合数据类型如list,truple,dict,str,都是Itrable不是Iterator,但可以通过iter()函数获得一个Iterator对象,例如:
通过iter()函数获得一个Iterator对象
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。