Python 迭代器

如何遍历一个列表

  1. for...in
for number in list(range(10)):
    print(number) # 0 ~ 9

  1. 迭代器
it = iter(list(range(10)))
while True:  
    try:
        print(next(it))  # 0 ~ 9
    except StopIteration:  
        break  

可迭代与迭代器

  1. 只要数据对象能够实现 __iter____getitem__的 方法就是可迭代对象;可迭代对象支持每次返回自己所包含的一个成员对象;可迭代对象都可以用 for...in 来遍历;

  2. listtuplestringdictsetfile 都是可迭代对象;自定义类只要其内部实现 __iter____getitem__的方法,也是可迭代对象;

  1. 当对象调用 __iter____getitem__ 方法就在内存中创建了一个能遍历此对象的每一个元素的迭代器;调用迭代器的next()方法可以遍历其每一个元素;

  2. 迭代器提供了一种访问容器中各个元素的统一接口,即next()方法, 使用next()方法可以依次访问容器中的元素;迭代器是不可逆的,当依次遍历完元素后,会返回Stopiteration

  3. 自定义可迭代对象要想能够生成迭代器,不仅要有实现__iter____getitem__的方法,同时还要定义__next__()的方法,用于使迭代器指向下一个元素;

class Fibs:
    def __init__(self):
        self.a = 0
        self.b = 1

    def __next__(self):
        self.a, self.b = self.b, self.a + self.b
        return self.a
    def __iter__(self):
        return self

    
fib = Fibs()
for f in fib:
    if f > 100:
        print(f) # 144
        break
原文地址:https://www.cnblogs.com/gzyxy/p/11814335.html