本文共 667 字,大约阅读时间需要 2 分钟。
生成器与迭代器的区别
在程序编程中,生成器和迭代器是常见的概念,但二者的区别容易引起混淆。一个重要的原则是:生成器一定是迭代器,但迭代器不一定是生成器。
迭代器的定义
迭代器是能够通过
next()
函数获取下一个值的对象。利用isinstance()
函数可以判断一个对象是否为迭代器。例如:from collections import Iteratorisinstance((x for x in range(10)), Iterator) → Trueisinstance([], Iterator) → Falseisinstance({}, Iterator) → Falseisinstance('abc', Iterator) → Falseisinstance(100, Iterator) → Falseiter()函数的作用
虽然列表(如
list
)、字典和字符串等数据类型属于Iterable,但它们并不是迭代器。要将它们转换为迭代器,可以使用iter()
函数:isinstance(iter([]), Iterator) → Trueisinstance(iter('abc'), Iterator) → True总结
:valuearea>
任何可作用于
for
循环的对象都是Iterable;任何可作用于
next()
函数的对象都是Iterator。虽然集合数据类型如
list
、dict
和str
是Iterable,但它们本身不是Iterator。通过iter()
函数可以将它们转换为Iterator对象。
转载地址:http://hfaiz.baihongyu.com/