📜  迭代器与枚举器 (1)

📅  最后修改于: 2023-12-03 15:41:56.423000             🧑  作者: Mango

迭代器与枚举器

在计算机科学中,迭代器(iterator)是一个对象,它允许程序员遍历容器(container)的元素,而无需了解容器的底层实现。在面向对象编程中,迭代器常被实现为类。

枚举器(enumerator)是一个实现迭代器模式的类。它允许程序员遍历一个聚合对象的元素而不是暴露该对象的内部表示。

Iterator(迭代器)

在 Python 中,迭代器可以用于 List,Tuple,Dict 和 Set 等容器类型。它是一种访问集合元素的方法,不需要事先知道集合的大小。Python 中的迭代器都实现了__iter__()方法,用于返回迭代器对象本身。

下面是一个简单的迭代器实现:

class MyIterator:
    def __init__(self):
        self.nums = [1, 2, 3, 4, 5]
        self.index = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.index >= len(self.nums):
            raise StopIteration
        value = self.nums[self.index]
        self.index += 1
        return value

my_iter = MyIterator()
for num in my_iter:
    print(num)

输出结果:

1
2
3
4
5
Enumerator(枚举器)

在 Python 中,枚举器是一个生成器(generator)对象,它允许程序员遍历一个序列的元素,同时追踪元素的索引。枚举器可以用于 List,Tuple 和 String 等容器类型。Python 中的枚举器都实现了enumerate()函数,用于返回一个带有元素和索引的迭代器对象。

下面是一个简单的枚举器实现:

my_list = ['apple', 'banana', 'cherry']
my_enum = enumerate(my_list)
for index, value in my_enum:
    print(index, value)

输出结果:

0 apple
1 banana
2 cherry

总结一下,迭代器和枚举器都是 Python 中用于遍历序列的工具,它们让程序员可以更加方便地访问序列中的元素。迭代器可以用于 List,Tuple,Dict 和 Set 等容器类型,枚举器可以用于 List,Tuple 和 String 等容器类型。两者的实现方式略有不同,但都允许程序员按照顺序遍历序列,并且都提供了一个 next() 方法用于获取下一个元素。