本文共 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/