python 可迭代对象
作者:互联网
python 可迭代对象
- 可迭代对象关系 如何判断 Iterable 可迭代对象 Iterator 迭代器对象 from collections.abc import Iterable, Iterator print(instance([], Iterable)) 定义 Iterable包含Iterator; Iterable协议规定必须实现__iter__方法,并且返回Iterator; Iterator协议规定必须实现__iter__方法和__next__方法(python2实现next方法), __next__方法返回迭代器的下一个项目 两个自定义迭代器代码块 class Iterator: def __iter__(self): return self def __next__(self): return 1 class Iterator: def __iter__(self): yield self for … in … 迭代器遍历,原理是首先调用 iter() 内部调用__iter__返回Iterator,然后调用 next() 内部调用__next__,直到捕获到StopIteration异常 __getitem__ 当对象只有__getitem__方法时也可以进行for .. in ..遍历,next将进入__getitem__从0开始以下标递增的方式进行迭代 class Test: def __init__(self): self.a = [1, 2, 3] def __getitem__(self, item): print("item:", item) return self.a[item] t = Test() iter_t = iter(t) print(iter_t) next(iter_t) >> <iterator object at 0x00000000028399E8>
标签: 来源: