迭代器

概念

咱们已经知道,能够直接做用于for 循环的数据类型有一下几种:
一、一类是集合数据类型,如list、tuple、dict、set、str等;
二、一类是generator(生成器),包括生成器和带yield的generator funcation;
(带yield的函数生成器和列表生成器)
 
这些能够直接做用于for循环的对象统称为可迭代对象:Iterable。
可使用isinstance()判断一个对象是不是Iterable对象:
 
 

建立迭代器对象的方法

1、iter()函数得到一个Iterator对象。
list、tuple、dict、set、str等数据类型能够用iter()函数转换成迭代器
例如:
 1 1、正常循环一个序列:
 2 for i in [1,2,3,4,5,6,7,8,9]
 3    pass
 4     .....
 5 
 6 2、用迭代器循环一个序列:
 7 #首先得到Iterator对象:
 8 it = iter([1,2,3,4,5])
 9 
10 #循环对象:
11 while True:
12     try:
13         #得到下一个值:
14         x = next(it)
15     except  StopIteration:
16         #遇到StopIteration就退出循环:
17         break
18 
19 
20 #注意:上下两个彻底等价
列表循环

 

2、跌倒器就是能够迭代的对象。
 1 def myrange(arg):
 2     start = 0
 3     while True:
 4         if start > arg:
 5             return
 6         yield  start
 7         start += 1
 8 ret = myrange(3)
 9 r = ret.__next__()  #进入函数,找到yield,获取yield后面的数据,每运行一次,生成器就会往下执行一个数值:
10 print(r)
11 r = ret.__next__()
12 print(r)
13 r = ret.__next__()
14 print(r)
15 r = ret.__next__()
16 print(r)
迭代器实例

 

3、用途:
socket的时候会用到,可是代码复杂性增长
迭代器就相似于概念性的一个知识点
迭代器就是由__next__能够一个一个提取的,相似于for循环的,逐步取值的,就叫作迭代器。
例如
一、一个列表,而后用for进行遍币,其实就是执行了r = ret.__next__();
二、当迭代到最后一个值时,按理说取完后会报错的,可是因为封装到foread
相关文章
相关标签/搜索