iterator & generator
- 一、容器、可迭代对象和迭代器
- 二、生成器
-
- (一)、何为生成器?
- (二)、生成器的实现方式
- (三)、扩展
一、容器、可迭代对象和迭代器
1、容器
- python中一切皆对象,对象的抽象就是类,而对象的集合就是容器。列表(list:[0,1,2]),元组(tuple:(0,1,2)),字典(
dict:{0:0,1:1,2:2}),集合(set:set([0,1,2]))都是容器
- 容器可以简单理解为多个元素在一起的单元,不同容器的区别就是内部数据结构的实现方法
2、可迭代对象
- 所有的容器都是可迭代的,也就是可迭代对象,可迭代可以想象成买苹果,卖家并不会告诉你有多少库存,每次你告诉卖家你要一个苹果,然后卖家采取行为;要么给你一个苹果,要么告诉你,苹果已经卖完了,你并不需要知道,卖家仓库是怎么摆放苹果的
3、迭代器
- 迭代器(iterator)提供了一个next的方法。调用这个方法后,要么得到容器的下一个对象,要么得到一个Stopiteration的错误(苹果卖完了)
- 可迭代对象并不等于迭代器,可迭代对象通过iter()函数返回一个迭代器,再通过next()函数就可以实现遍历。我们常用的for循环将这个过程隐式化了
l1 = [1,2,3,4]
print(next(l1))
上述代码会报错:TypeError:‘list’ object is not an iterator,因为l1只是一个可迭代对象,并没有返回迭代器
l1 = [1,2,3,4]
l2 = iter(l1)
print(l2)
print(