可以自己定义迭代器吗?举个例子
时间: 2023-08-08 09:06:14 浏览: 98
是的,可以自己定义迭代器。下面是一个简单的例子:
```python
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` 类,它实现了迭代器协议(即 `__iter__()` 和 `__next__()` 方法)。这个迭代器可以在初始化时指定起始和终止值,然后依次返回从起始值到终止值之间的整数。我们可以使用 `for ... in ...` 循环或者 `next()` 函数来遍历这个迭代器:
```python
it = MyIterator(1, 5)
for i in it:
print(i)
# 输出:1 2 3 4 5
it = MyIterator(1, 5)
while True:
try:
print(next(it))
except StopIteration:
break
# 输出:1 2 3 4 5
```
这个例子只是一个简单的示例,实际上我们可以根据需要自定义更加复杂的迭代器来遍历各种不同的数据结构。
阅读全文