码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-12-25 20:53:20      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:[]   迭代   迭代器   dict   本质   pytho   except   odi   ict   

直接用作于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之路----------迭代器

标签:[]   迭代   迭代器   dict   本质   pytho   except   odi   ict   

原文地址:http://www.cnblogs.com/python1023/p/6220288.html

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