Python 中的迭代器是一个可以被遍历的对象,它能返回序列中的元素一个接一个地进行迭代。迭代器对象从集合的第一个元素开始访问,直到所有的元素都被访问完结束。迭代器只能向前不能后退。
在 Python 3 中创建一个迭代器很简单。只需要实现两个方法:__iter__()
和 __next__()
。
__iter__()
方法
__iter__()
方法返回一个迭代器对象,该对象实现了 __next__()
方法。在本教程中,我们将简单地返回自身:
class MyIterator:
def __init__(self, data):
self.data = data
self.index = 0
def __iter__(self):
return self
__next__()
方法
__next__()
方法返回序列中的下一个元素。如果没有更多元素,则应引发 StopIteration 异常:
def __next__(self):
if self.index >= len(self.data):
raise StopIteration
result = self.data[self.index]
self.index += 1
return result
使用迭代器
现在我们可以创建一个 MyIterator
对象,并遍历其中的元素:
if __name__ == "__main__":
data = [1, 2, 3, 4]
iter_obj = MyIterator(data)
for item in iter_obj:
print(item)
这将打印出 1
, 2
, 3
, 4
,每个数字占一行。
使用生成器创建迭代器
Python 还提供了一个更简单的方法来创建迭代器:生成器。生成器是一种特殊类型的函数,它能够在执行期间返回多个值。我们可以使用 yield
语句来定义一个生成器:
def my_generator(data):
for item in data:
yield item
现在,我们可以像这样使用我们的生成器:
if __name__ == "__main__":
data = [1, 2, 3, 4]
for item in my_generator(data):
print(item)
输出结果与使用迭代器相同。使用生成器可以让我们的代码更简洁、更易读。