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で基本的なイテレーターを構築することができます。
