# 容器classA:def__init__(self):
self.items =[1,2]def__contains__(self, item):return item in self.items
a = A()print(1in a)# Trueprint(2in a)# Trueprint(3in a)# False# 迭代器classB:"""A 实现了迭代器协议 它的实例就是一个迭代器"""def__init__(self, n):
self.idx =0
self.n = n
def__iter__(self):print('__iter__')return self
def__next__(self):if self.idx < self.n:
val = self.idx
self.idx +=1return val
else:raise StopIteration()# 迭代元素
a = B(3)next(a)for i in a:print(i)# 再次迭代 没有元素输出 因为迭代器只能迭代一次for i in a:print(i)for i in B(3):print(i)
g =(i for i inrange(5))print(g)print(iter(g))for i in g:print(i)# 生成器defgen(n):for i inrange(n):yield i
# 创建一个生成器
g = gen(5)for i in g:print(i)