浅析迭代器与生成器的区别

浅析Iterator 与Iterable的区别

Iterable (可迭代对象)

简单的理解就是可以利用for来遍历的对象,
一类是基本数据类型:str,list,dicttuple
另一类是; generator(生成器)

何为生成器?
1、不用yield

1
2
3
> gen = (x for x in range(100))  # gen为一个生成器对象
> gen = [x for x in range(100)] # gen为一个list对象
>

2、利用yield

1
2
3
4
5
6
7
8
9
> def fib(n):
i,a,b=0,0,1
yield a
while i<n:
yield b
a,b=b,a+b
i += 1
f = fib(100) # f为生成器对象
>

总而言之,生成器对象具有next()方法,是可迭代对象


Iterator(迭代器)

生成器是一种迭代器,具有next()方法的对象是迭代器,迭代器是惰性序列。
str,dict,list,tuple 不是迭代器,可以通过iter()方法获得迭代器。

本文标题:浅析迭代器与生成器的区别

文章作者:定。

发布时间:2017年3月11日 - 21时03分

本文字数:566字

原始链接:http://cocofe.cn/2017/03/11/浅析迭代器和生成器的区别/

许可协议: Attribution-NonCommercial 4.0

转载请保留以上信息。