使用__getitem__完成一个迭代器
时间: 2023-10-25 14:23:53 浏览: 76
实现节点和迭代器-代码
要使用 `__getitem__` 来创建一个迭代器,可以定义一个类,并在其中实现 `__getitem__` 方法。这个方法需要接受一个整数索引并返回相应的元素。同时,还需要定义一个私有属性 `_index` 来跟踪当前迭代器的位置。
以下是一个示例代码:
```python
class MyIterator:
def __init__(self, data):
self._data = data
self._index = 0
def __getitem__(self, index):
return self._data[index]
def __iter__(self):
return self
def __next__(self):
if self._index >= len(self._data):
raise StopIteration
result = self._data[self._index]
self._index += 1
return result
```
在这个示例中,我们定义了一个名为 `MyIterator` 的类,它接受一个列表作为数据源。 `__getitem__` 方法将返回列表中对应索引的元素。我们还实现了 `__iter__` 和 `__next__` 方法来使这个类可以被用作一个迭代器。当我们调用 `next()` 方法时,它将返回下一个元素,并更新 `_index` 属性。如果已经迭代完了所有元素,就会抛出 `StopIteration` 异常来终止迭代。
使用这个迭代器的示例代码如下:
```python
my_iterator = MyIterator([1, 2, 3, 4, 5])
for item in my_iterator:
print(item)
```
输出结果为:
```
1
2
3
4
5
```
阅读全文