Python 3での基本的なイテレーターの構築方法
Python 3では、イテレーターを作成するためには、クラスを定義し、`__iter__()` メソッドと `__next__()` メソッドを実装する必要があります。以下に、基本的なイテレーターの構築方法を示します。
サンプルコード1: 1から10までの数字を出力するイテレーター
class MyIterator: def __init__(self): self.current = 1 def __iter__(self): return self def __next__(self): if self.current <= 10: result = self.current self.current += 1 return result else: raise StopIteration # イテレーターを使用して1から10までの数字を出力 my_iter = MyIterator() for num in my_iter: print(num)
上記のコードでは、`MyIterator` クラスを定義し、`__iter__()` メソッドと `__next__()` メソッドを実装しています。イテレーターを使用して、1から10までの数字を順番に出力しています。
サンプルコード2: リストの要素を逆順で出力するイテレーター
class ReverseIterator: def __init__(self, data): self.data = data self.index = len(data) - 1 def __iter__(self): return self def __next__(self): if self.index >= 0: result = self.data[self.index] self.index -= 1 return result else: raise StopIteration # イテレーターを使用してリストの要素を逆順で出力 my_list = [1, 2, 3, 4, 5] reverse_iter = ReverseIterator(my_list) for item in reverse_iter: print(item)
上記のコードでは、`ReverseIterator` クラスを定義し、リストの要素を逆順で出力するイテレーターを作成しています。
サンプルコード3: 文字列の各文字を出力するイテレーター
class CharIterator: def __init__(self, string): self.string = string self.index = 0 def __iter__(self): return self def __next__(self): if self.index < len(self.string): result = self.string[self.index] self.index += 1 return result else: raise StopIteration # イテレーターを使用して文字列の各文字を出力 my_string = "Python" char_iter = CharIterator(my_string) for char in char_iter: print(char)
上記のコードでは、`CharIterator` クラスを定義し、文字列の各文字を順番に出力するイテレーターを作成しています。
Python 3で基本的なイテレーターを構築する方法は、クラスを定義して `__iter__()` メソッドと `__next__()` メソッドを実装することです。`__iter__()` メソッドはイテレーターオブジェクト自体を返し、`__next__()` メソッドは次の要素を返します。イテレーターが最後の要素に達した場合は、`StopIteration` 例外を発生させる必要があります。
以下は、1から10までの整数を返す簡単なイテレーターの例です。
```python
class MyIterator:
def __init__(self):
self.current = 1def __iter__(self):
return selfdef __next__(self):
if self.current > 10:
raise StopIteration
else:
self.current += 1
return self.current - 1my_iter = MyIterator()
for num in my_iter:
print(num)
```このようにして、Python 3で基本的なイテレーターを構築することができます。