在 Python 中,可以通过实现 __iter__()
和 __next__()
方法来创建一个迭代器。其中 __iter__()
方法返回一个迭代器对象自身,而 __next__()
方法返回迭代器中的下一个值。
以下是一个迭代器的示例代码:
class MyIterator:
def __init__(self, start, end):
self.current = start
self.end = end
def __iter__(self):
return self
def __next__(self):
if self.current > self.end:
raise StopIteration
else:
self.current += 1
return self.current - 1
在上面的示例中,MyIterator
类实现了迭代器的功能。__init__()
方法用于初始化迭代器的起始值和结束值,__iter__()
方法返回迭代器对象自身,__next__()
方法用于返回迭代器中的下一个值。当迭代器的值超过了结束值,__next__()
方法会抛出 StopIteration
异常。
使用迭代器的示例代码如下:
my_iterator = MyIterator(1, 5)
for i in my_iterator:
print(i)
上述代码会输出以下结果:
1
2
3
4
5
在迭代器中,可以使用 yield
关键字来简化代码。yield
关键字可以将一个函数转换为一个生成器,生成器会自动实现迭代器的 __iter__()
和 __next__()
方法。
以下是上述迭代器的示例代码,使用 yield
关键字来实现:
def my_iterator(start, end):
current = start
while current <= end:
yield current
current += 1
使用迭代器的示例代码和输出结果与之前的示例相同。
从上面的两个迭代器实例中可以看到:第一个实例定义了一个类和几个函数实现迭代器功能,第二个实例则仅仅通过一个函数实现了迭代器功能。