はじめに
Pythonには、イテレータ(iterator)から次の要素を取得するための便利な組み込み関数 next()
があります。本記事では、next()
関数の基本構文や使用例、応用例を初心者向けに詳しく解説します。Python 3.11 に対応した内容となっているので、ぜひ参考にしてください。
next関数とは?
next()
関数は、イテレータから次の要素を取得するためのPythonの組み込み関数です。リストやタプルのようなイテラブルオブジェクトを直接扱うのではなく、iter()
を用いてイテレータを生成し、それを next()
で順に取得します。
next関数の基本構文
next()
関数の基本的な構文は以下の通りです。
next(iterator, default)
iterator
: 次の要素を取得するイテレータdefault
(省略可): 取り出せる要素がない場合に返されるデフォルト値(指定しない場合はStopIteration
例外が発生)
next関数の使用例
基本的な使い方
以下の例では、リストからイテレータを作成し、next()
を用いて順に要素を取得します。
# イテレータの作成
nums = iter([1, 2, 3])
# next() で要素を取得
print(next(nums)) # 1
print(next(nums)) # 2
print(next(nums)) # 3
デフォルト値を設定
イテレータが終了したときに StopIteration
を防ぐためにデフォルト値を設定できます。
nums = iter([1, 2, 3])
print(next(nums, "終了")) # 1
print(next(nums, "終了")) # 2
print(next(nums, "終了")) # 3
print(next(nums, "終了")) # "終了"
next関数の応用例
無限シーケンスを処理する
itertools.count()
を用いて無限シーケンスを処理する例です。
import itertools
counter = itertools.count(start=1, step=2) # 1, 3, 5, 7, ...
print(next(counter)) # 1
print(next(counter)) # 3
print(next(counter)) # 5
カスタムイテレータクラスで利用
クラス内で __iter__()
と __next__()
を実装することで、next()
を利用可能なカスタムイテレータを作成できます。
class MyIterator:
def __init__(self, start, end):
self.current = start
self.end = end
def __iter__(self):
return self
def __next__(self):
if self.current >= self.end:
raise StopIteration
value = self.current
self.current += 1
return value
# イテレータを作成
my_iter = MyIterator(1, 5)
print(next(my_iter)) # 1
print(next(my_iter)) # 2
print(next(my_iter)) # 3
print(next(my_iter)) # 4
まとめ
next()
はイテレータから次の要素を取得するPythonの組み込み関数。default
値を設定するとStopIteration
を回避できる。itertools
モジュールやカスタムイテレータと組み合わせることで応用範囲が広がる。
next()
を活用して、Pythonのイテレータ操作をスムーズに行いましょう!