Python next() 関数
next()Python でイテレータから次の要素を取得するために使用される組み込み関数です。
イテレータは一度だけ消費されるオブジェクトであり、next()イテレータの要素に一つずつアクセスでき、すべてのデータを一度にメモリに読み込む必要はありません。
単語の意味: next「次」という意味で、イテレータの次の要素を取得するために使われます。
基本構文とパラメータ
構文形式
next(iterator) next(iterator, default)
パラメータの説明
- パラメータ iterator:
- 型: イテレータ
- 説明: 要素を取り出すイテレータ。
- パラメータ default(オプション):
- 型: 任意の値
- 説明: イテレータが尽きた場合に返されるデフォルト値。
関数の説明
- 戻り値: イテレータの次の要素を返します。
- 例外: イテレータが尽きてデフォルト値が指定されていない場合、
StopIteration例外がスローされます。
例
例1:基本的な使い方
例
# リストからイテレータを作成
my_list = [1, 2, 3]
iterator = iter(my_list)
# 最初の要素を取得
print(next(iterator)) # 出力: 1
# 2番目の要素を取得
print(next(iterator)) # 出力: 2
# 3番目の要素を取得
print(next(iterator)) # 出力: 3
# さらに取得すると例外がスローされる
# print(next(iterator)) # StopIteration
my_list = [1, 2, 3]
iterator = iter(my_list)
# 最初の要素を取得
print(next(iterator)) # 出力: 1
# 2番目の要素を取得
print(next(iterator)) # 出力: 2
# 3番目の要素を取得
print(next(iterator)) # 出力: 3
# さらに取得すると例外がスローされる
# print(next(iterator)) # StopIteration
期待される実行結果:
1 2 3
コード解析:
- まず、
iter()イテラブルをイテレータに変換します。 - 呼び出すたびに
next()1つの要素を返します。 - イテレータは一度しか走査できず、尽きた後にリセットすることはできません。
例2:デフォルト値を使用する
例
# デフォルト値を使用して例外を回避
my_list = [1, 2]
iterator = iter(my_list)
print(next(iterator, 'N/A')) # 出力: 1
print(next(iterator, 'N/A')) # 出力: 2
print(next(iterator, 'N/A')) # 出力: N/A(イテレータが尽きたため、デフォルト値を返す)
print(next(iterator, 'N/A')) # 出力: N/A
my_list = [1, 2]
iterator = iter(my_list)
print(next(iterator, 'N/A')) # 出力: 1
print(next(iterator, 'N/A')) # 出力: 2
print(next(iterator, 'N/A')) # 出力: N/A(イテレータが尽きたため、デフォルト値を返す)
print(next(iterator, 'N/A')) # 出力: N/A
期待される実行結果:
1 2 N/A N/A
コード解析:
- デフォルト値を指定した後は、イテレータが尽きても例外はスローされません。
- これは、長さが不明なデータストリームを扱う場合に便利です。
例3:実際の応用
例
# ジェネレータから要素を取得
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
fib = fibonacci()
print(next(fib)) # 出力: 0
print(next(fib)) # 出力: 1
print(next(fib)) # 出力: 1
print(next(fib)) # 出力: 2
print(next(fib)) # 出力: 3
# ファイルの先頭数行を読み取る
with open("example.txt", "w") as f:
f.write("line1\nline2\nline3\n")
with open("example.txt") as f:
print(next(f).strip()) # 出力: line1
print(next(f).strip()) # 出力: line2
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
fib = fibonacci()
print(next(fib)) # 出力: 0
print(next(fib)) # 出力: 1
print(next(fib)) # 出力: 1
print(next(fib)) # 出力: 2
print(next(fib)) # 出力: 3
# ファイルの先頭数行を読み取る
with open("example.txt", "w") as f:
f.write("line1\nline2\nline3\n")
with open("example.txt") as f:
print(next(f).strip()) # 出力: line1
print(next(f).strip()) # 出力: line2
期待される実行結果:
0 1 1 2 3 line1 line2
next()ジェネレータ、ストリームデータ、ファイルなどを扱う場面で非常に便利です。
その他の拡張
Python3 組み込み関数