Python 中如果一个迭代器,在处理完所有的元素后,不能再次被迭代,那么就称为有限迭代器。如果你了解迭代器的实现原理,那么你也能够理解有限迭代器的实现。
有限迭代器通常是基于计数器来实现的,比如通过一个 while 循环进行迭代,类似于下面的代码:
i = 0
while i < len(sequence):
# 对 sequence[i] 进行处理
i += 1
有限迭代器的使用方法与传统迭代器的使用方法基本相同,区别在于在处理完每一个元素后需要进行计数器的增加操作,使得下一次迭代能够继续对其进行处理。下面是有限迭代器的一般使用方法:
class FiniteIterator:
def __init__(self, sequence):
self._sequence = sequence
self._i = 0
def __iter__(self):
return self
def __next__(self):
if self._i >= len(self._sequence):
raise StopIteration
value = self._sequence[self._i]
self._i += 1
return value
这里的类 FiniteIterator
实现了一个有限迭代器,他将一个可迭代对象作为输入,通过 __next__
方法返回元素,如果被处理的元素已经超出了可迭代对象的长度,则抛出 StopIteration
异常。
下面是使用示例:
sequence = ['a', 'b', 'c', 'd']
it = FiniteIterator(sequence)
for element in it:
print(element)
在这个例子中,我们创建了一个 FiniteIterator
对象,并将其传入一个 for 循环中迭代。这个循环将依次迭代 sequence
中的每一个元素,并输出其值。
再给出一个示例:
sequence = range(5)
it = FiniteIterator(sequence)
print(list(it))
这段代码使用 FiniteIterator
对象处理了一个 range
对象,使用了 list
命令返回处理后的结果。