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

Python不归路_迭代器

时间:2017-08-27 16:05:21      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:验证   生成   false   color   bsp   小结   instance   数据类型   lis   

迭代器:

  for循环可以对两类数据类型进行迭代:

  1.比如list、tuple、dict、set等

  2.带有yield关键字的函数或者能用__next__()进行调用的,也就是生成器

  能被for调用的对象都是Iterable的,可以使用isinstance方法验证是不是Iterable  

from collections import Iterable
a=[1,b,c]
b={name:gally,age:23}
isinstance(a,Iterable)
isinstance(b,Iterable)
输出结果:
True
True

 那么既然list、tuple、dict、set等都是Iterable,那是不是Iterator呢?我们仍然可以使用isinstance来判断。

 

from collections import Iterator
isinstance(a,Iterator)
isinstance(b,Iterator)
输出结果:
False
False

 很明显list、set、tuple、dict都不是迭代器,但是它们是可以迭代的。那能否把它们也变成迭代器呢?

from collections import Iterator
a=[1,b,c]
isinstance(iter(a),Iterator)
输出结果:
True
  

小结:List、Set、tuple、dict等是Iterable,但不是Iterator,使用Iter()方法可以使可迭代对象变成迭代器。

接下来我们来看生成器是否Iterable和Iterator,同样我们还是用isinstance来验证。

from collections import Iterator
def
func1(x): while x < 1000: n = x**2 yield n x+=1 f=func1(200)
isinstance(f,Iterator)#判断是否是迭代器
输出结果:
True
from collections import Iterable
isinstance(f,Iterable)
输出结果:
True

小结:生成器既是Iterable,又是Iterator。

总结:能用for循环的都是Iterable类型。

   list、dict、set、tuple等都是Iterable但不是Iterator,可以通过Iter()函数使其变为Iterator。

   生成器都是迭代器。

   

Python不归路_迭代器

标签:验证   生成   false   color   bsp   小结   instance   数据类型   lis   

原文地址:http://www.cnblogs.com/gally-jiang/p/7428871.html

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