码迷,mamicode.com
首页 > 其他好文 > 详细

迭代器和生成器2

时间:2019-11-20 12:20:13      阅读:54      评论:0      收藏:0      [点我收藏+]

标签:font   调用   iter   instance   int   break   函数调用   style   ble   

总结:

简单理解:

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

标签:font   调用   iter   instance   int   break   函数调用   style   ble   

原文地址:https://www.cnblogs.com/mygodswangzi/p/11896745.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!