Python学习笔记——可迭代对象、迭代器

时间:2022-05-21 16:02:45

示例:

class Iterator:
    """
    迭代器类
    """

    def __init__(self, value):
        self.value = value
        self.index = -1  # 下标

    def __next__(self):
        self.index += 1  # 下标加1,从0开始
        if self.index >= len(self.value):
            raise StopIteration  # 停止迭代
        return self.value[self.index]


class Iterable:
    """
    可迭代对象类
    """

    def __init__(self, value):
        self.value = value

    def __iter__(self):
        return Iterator(self.value)  # 返回一个迭代器对象


# 测试示例
test01 = Iterable([1, 2, 3, 4, 5])

for item in test01:
    print(item)
# 下面的代码运行效果同上面2行
test02 = test01.__iter__()
while True:
    try:
        print(test02.__next__())
    except:
        break

 

迭代:
每一次对过程的重复称之为”迭代一次”,而每一次迭代得到的结果会作为下一次迭代的初始值。例如:循环获取容器中的元素。
可迭代对象(iterable)
定义:具有__iter__函数的对象,可以返回迭代器对象。
迭代器(iterator)
定义:具有__next__函数的对象,可以获取下一个元素。
用法:
1.重写__next__()

 def __next__():
            语句...
            if 没有元素:
                raise StopIteration()  # 停止迭代
            return 数据中的元素  #聚合对象的元素

2. 重写__iter__()

def __iter__(self):
            return 迭代器对象

3.使用
        for item in 可迭代对象:
            语句...
4.原理(执行结果同3)

变量01 = 可迭代对象. __iter__()
while True:
    try:
      元素 = 变量01.__next__()
    except:
      break