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

PYTHON3 チュートリアル

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

Python 3では、イテレーターを作成するためには、クラスを定義し、`__iter__()` メソッドと `__next__()` メソッドを実装する必要があります。以下に、基本的なイテレーターの構築方法を示します。

サンプルコード1: 1から10までの数字を出力するイテレーター

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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)
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)
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: リストの要素を逆順で出力するイテレーター

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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)
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)
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: 文字列の各文字を出力するイテレーター

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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)
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)
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