迭代器和生成器2
Posted mygodswangzi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迭代器和生成器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
以上是关于迭代器和生成器2的主要内容,如果未能解决你的问题,请参考以下文章