Python高级特性二、迭代器

一、迭代器

凡是可作用于for循环的对象都是Iterable(可迭代对象)类型;
凡是可作用于next()函数的对象都是Iterator(迭代器)类型,它们表示一个惰性计算的序列;
集合数据类型如list、dict、str等是Iterable(可迭代对象)但不是Iterator(迭代器),不过可以通过iter()函数获得一个Iterator(迭代器)对象。

Python高级特性二、迭代器

可以直接作用于for循环的数据类型有以下几种:

一类是集合数据类型,如list、tuple、dict、set、str等;

一类是generator,包括生成器和带yield的generator function(生成器函数)

1、可迭代对象(Iterable):

可以直接作用于for循环的对象统称为可迭代对象(Iterable)。可以使用isinstance()判断一个对象是否是Iterable对象

2、迭代器(Iterator):

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

判断可迭代对象

from collections.abc import Iterable
a=isinstance([],Iterable)
print(a)
b=isinstance('ABF', Iterable)
print(b)
c=isinstance(123,Iterable)
print(c)
d=isinstance((x for x in range(10)),Iterable)
print(d)
E:\Anaconda3\anaconda\python.exe F:/seven.py
True
True
False
True

Process finished with exit code 0

生成器都是迭代器(Iterator)对象,但list、dict、str虽然是可迭代对象,却不是迭代器(Iterator)。
把list、dict、str等迭代对象变成迭代器(Iterator)可以使用iter()函数:

from collections.abc import Iterator
a = isinstance(iter([]), Iterator)
print(a)
b = isinstance(iter('abc'), Iterator)
print(b)

E:\Anaconda3\anaconda\python.exe F:/seven.py
True
True

Process finished with exit code 0

上一篇:不允许ComboBox手动输入


下一篇:Python(69条)内置函数 , 都帮你整理好了!快来取吧(1-15)