首页 > 代码库 > Python之路----------迭代器

Python之路----------迭代器

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

1、集合类的数据类型:list tuple dict set str等

2、生成器generator,包括生成器和带有yiled 的generator function

上面这些可以直接用于for循环的对象统称为可迭代的对象Iterable。

1 #coding=utf-8
2 
3 from collections import Iterable
4 
5 print(isinstance({}, Iterable))  #True
6 print(isinstance([], Iterable))  #True
7 print(isinstance(iterable, Iterable))  #True
8 print(isinstance((), Iterable))  #True
9 print(isinstance(100, Iterable))   #False

 

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

1 from collections import Iterator
2 
3 print(isinstance({}, Iterator))  #False
4 print(isinstance([], Iterator))  #False
5 print(isinstance(iterable, Iterator))  #False
6 print(isinstance((), Iterator))  #False
7 print(isinstance((x for x in range(5)), Iterator))   #True
8 
9 #上述可知,列表、字典、字符串、元祖等都不属于迭代器(Iterator)

可迭代对象能否变成迭代器呢?通多内置方法iter()可以实现

1 from collections import Iterator
2 
3 print(isinstance(iter({}), Iterator))  #True
4 print(isinstance(iter([]), Iterator))  #True
5 print(isinstance(iter(iterable), Iterator))  #True
6 print(isinstance(iter(()), Iterator))  #True
7 print(isinstance((x for x in range(5)), Iterator))   #True

 

小结:

 

 

 

 

 1 #Python的For循环本质就是不断通过调用next函数实现的例如下面两段代码
 2 
 3 #代码一
 4 
 5 for x in range(10):
 6     print(x)
 7 
 8 #代码二
 9 it = iter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
10 while True:
11     try:
12         x = next(it)
13         print(x)
14     except StopIteration:
15         break
16 #代码一与代码二等价

 

Python之路----------迭代器