迭代器和生成器2

总结:

简单理解:

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

一类是集合类型:list,tuple,dict,set,str等
 一类是generator,包括生成器和带yield的generator function
2.这些可以直接作用于for循环的对象统称为可迭代对象:iterable
  可以使用isinstance()判断一个对象是否是iterable对象

例子:

from collections.abc import Iterable
isinstance([],Iterable)
isinstance({},Iterable)
isinstance("abc",Iterable) #可迭代对象
isinstance(iter('abc'),Iterable) #迭代器
isinstance(100,Iterable) #false,不可以迭代
isinstance((x for x in range(100)),Iterable)

3.生成器不仅作用于for循环,还可以被next()函数不断调用并返回下一个值,直至最后抛出StopIterable错误表示无法继续返回下一个值了

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

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

例子

it =iter([1,2,3,5,6])
while True:
try:
x = next(it)
# print(x)
except StopIteration:
break
#下面代码等价
for x in [1,2,3,4,5,6]:
pass

猜你喜欢

转载自www.cnblogs.com/mygodswangzi/p/11896745.html
今日推荐