Python 3で基本的なイテレーターを構築する方法

PYTHON3 チュートリアル

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 = 1

def __iter__(self):
return self

def __next__(self):
if self.current > 10:
raise StopIteration
else:
self.current += 1
return self.current - 1

my_iter = MyIterator()
for num in my_iter:
print(num)
```

このようにして、Python 3で基本的なイテレーターを構築することができます。

購読
通知
0 Comments
Inline Feedbacks
View all comments