python~迭代器,生成器(2)

**生成器一定是迭代器,但是迭代器不一定是生成器

迭代器:

可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator

??isinstance() 判断一个对象是否是 Iterator 对象:

In [56]: from collections import Iterator

In [57]: isinstance((x for x in range(10)), Iterator)
Out[57]: True

In [58]: isinstance([], Iterator)
Out[58]: False

In [59]: isinstance({}, Iterator)
Out[59]: False

In [60]: isinstance('abc', Iterator)
Out[60]: False

In [61]: isinstance(100, Iterator)
Out[61]: False

iter()函数

生成器都是 Iterator 对象,但 list 、 dict 、 str 虽然是 Iterable,却不是 Iterator

把 list 、 dict 、 str 等 Iterable 变成 Iterator 可以使用 iter() 函数:

In [62]: isinstance(iter([]), Iterator)
Out[62]: True

In [63]: isinstance(iter('abc'), Iterator)
Out[63]: True

总结

凡是可作用于 for 循环的对象都是 Iterable 类型;

凡是可作用于 next() 函数的对象都是 Iterator 类型

集合数据类型如 list 、 dict 、 str 等是 Iterable 但不是 Iterator ,不过可以通过 iter() 函数获得一个 Iterator 对象。

猜你喜欢

转载自blog.csdn.net/CorrectForm/article/details/83552605
今日推荐