Python|iter()関数の使い方

1. はじめに

Pythonで繰り返し処理を行う際、リストやタプルなどのイテラブルなオブジェクトをfor文で使うのが一般的です。しかし、内部的にどのように繰り返しが行われているかを知っていますか?そのカギを握るのがiter()関数です。

本記事では、Pythonのiter()関数の基本的な使い方から、実務でも活用できる応用例、注意点まで、初心者にもわかりやすく解説します。コード例や実行結果も交えながら丁寧に説明していきますので、Python学習者は必見です。

 

2. iter()関数の基本と使い方

iter()関数とは?

iter()関数は、Pythonでイテレータ(iterator)を生成するための組み込み関数です。イテレータは「次の要素を1つずつ取り出す」オブジェクトで、forループの裏側でもこの仕組みが使われています。

基本的な使い方

リストなどのイテラブルオブジェクトに対してiter()を使うと、イテレータを取得できます。

fruits = ['apple', 'banana', 'cherry']

# イテレータを作成
it = iter(fruits)

# 次の要素を1つずつ取り出す
print(next(it))
print(next(it))
print(next(it))

実行結果:

apple
banana
cherry

next()関数を使うことで、iter()で生成したイテレータから順番に要素を取得できます。

イテレータの特徴

  • 一度取り出した要素は戻らない(消費される)
  • 要素が尽きた状態でnext()を呼ぶとStopIteration例外が発生する

 

3. iter()関数のよくある使い方・応用例

forループの内部で使われている

普段使っているforループも、実はiter()next()を内部的に利用しています。

fruits = ['apple', 'banana', 'cherry']
it = iter(fruits)

while True:
    try:
        fruit = next(it)
        print(fruit)
    except StopIteration:
        break

実行結果:

apple
banana
cherry

ファイルの読み込みに使う

ファイルオブジェクトもイテラブルなので、iter()を使って1行ずつ処理できます。

with open('example.txt') as f:
    it = iter(f)
    for line in it:
        print(line.strip())

実行結果:

(ファイルの各行が出力される)

引数付きiter(func, sentinel)でカスタムイテレータ

iter()は2つの引数を取ることもでき、関数呼び出しと終了条件(番兵)を指定してカスタムイテレータを作成できます。

import random

# 0が出るまでランダムな数を出力する
def get_random():
    return random.randint(0, 5)

for num in iter(get_random, 0):
    print(num)

実行結果(例):

3
5
2
1
(0が出たら終了)

 

4. iter()使用時の注意点・エラー対策

next()で取り出しすぎるとStopIterationエラーが発生

イテレータの最後の要素を取り出した後、さらにnext()を呼ぶとエラーになります。

numbers = [1, 2]
it = iter(numbers)

print(next(it))  # 1
print(next(it))  # 2
print(next(it))  # エラー発生

実行結果:

1
2
Traceback (most recent call last):
  ...
StopIteration

エラーを避けるにはtry-exceptStopIterationをキャッチするか、forループを使うのが安全です。

リストとイテレータの違いに注意

イテレータは一度しか使えません。以下の例で2回目のforループは何も出力されません。

data = ['a', 'b', 'c']
it = iter(data)

for x in it:
    print(x)

# 再利用しようとしても出力されない
for x in it:
    print(x)

実行結果:

a
b
c

イテレータは「使い切り型」なので、必要ならiter()で再度生成しましょう。

 

5. まとめ

  • iter()はイテレータを生成するための組み込み関数
  • リスト、タプル、ファイルなどのイテラブルなオブジェクトに使用できる
  • カスタム繰り返し処理にはiter(func, sentinel)が便利
  • イテレータは使い切りなので注意が必要

iter()関数はPythonの繰り返し処理の中核を担っており、理解することでコードの内部動作がより深くわかるようになります。実務でも「大きなデータを1つずつ処理する」「終了条件付きのループを書く」といったシーンで役立ちます。
ぜひ、今回学んだ内容を使ってPythonスキルを一歩先へ進めてください!

タイトルとURLをコピーしました