Python next() 関数

Python3 内置函数Python3 組み込み関数


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

期待される実行結果:

1
2
3

コード解析:

  1. まず、iter()イテラブルをイテレータに変換します。
  2. 呼び出すたびにnext()1つの要素を返します。
  3. イテレータは一度しか走査できず、尽きた後にリセットすることはできません。

例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

期待される実行結果:

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

期待される実行結果:

0
1
1
2
3
line1
line2

next()ジェネレータ、ストリームデータ、ファイルなどを扱う場面で非常に便利です。


Python3 内置函数Python3 組み込み関数


その他の拡張