Python iter() 関数とは?使い方・next()との関係を初心者向けに解説

Pythonのiter()は、リストやタプルなどの反復可能(iterable)なオブジェクトからイテレータ(iterator)を作るための組み込み関数です。

for文の仕組みを理解したり、next()と組み合わせてデータを1つずつ取り出したりするときに使います。

この記事では、Python初心者向けにiter()の基本的な使い方から、next()との関係、for文との違いまで解説します。


iter()とは?

iter()は、反復可能なオブジェクトからイテレータを作成する関数です。

基本構文は次のとおりです。

iter(オブジェクト)

例えば、リストにiter()を使ってみます。

numbers = [10, 20, 30]

iterator = iter(numbers)

print(iterator)

実行すると、イテレータオブジェクトが返されます。

このイテレータから、next()を使って値を1つずつ取得できます。

numbers = [10, 20, 30]

iterator = iter(numbers)

print(next(iterator))
print(next(iterator))
print(next(iterator))

実行結果:

10
20
30

このように、iter()データを順番に取り出すためのイテレータを作る関数です。


イテレータとは?

イテレータとは、データを1つずつ順番に取り出せるオブジェクトです。

例えば、次のリストがあります。

numbers = [10, 20, 30]

このリストにiter()を使います。

iterator = iter(numbers)

すると、リストの要素を順番に取得できるイテレータになります。

print(next(iterator))
10

もう一度実行すると、次の要素が取得されます。

print(next(iterator))
20

さらに実行すると、

print(next(iterator))
30

となります。

つまり、

リスト
  ↓
iter()
  ↓
イテレータ
  ↓
next()
  ↓
10 → 20 → 30

という関係です。


iter()next()の関係

iter()next()はセットで理解すると分かりやすくなります。

numbers = [10, 20, 30]

iterator = iter(numbers)

print(next(iterator))
print(next(iterator))
print(next(iterator))

結果:

10
20
30

それぞれの役割は次のとおりです。

関数 役割
iter() イテレータを作る
next() イテレータから次の値を取得する

つまり、

iter()で取り出す仕組みを作り、next()で1つずつ取り出す

と覚えるとよいでしょう。


最後まで取り出すとStopIterationになる

イテレータに残っているデータがなくなると、next()StopIterationという例外を発生させます。

numbers = [10, 20, 30]

iterator = iter(numbers)

print(next(iterator))
print(next(iterator))
print(next(iterator))
print(next(iterator))

実行すると、最後のnext()StopIterationが発生します。

10
20
30
StopIteration

これは「もう取り出せるデータがありません」という意味です。


for文でもiter()が使われている

普段Pythonを書くときは、次のようなfor文を使うことが多いでしょう。

numbers = [10, 20, 30]

for number in numbers:
    print(number)

結果:

10
20
30

実は、for文は内部的にイテレータを利用しています。

イメージとしては、

iterator = iter(numbers)

while True:
    try:
        number = next(iterator)
        print(number)
    except StopIteration:
        break

のような処理が行われています。

そのため、iter()next()を理解すると、Pythonのfor文がどのように動いているのかも理解しやすくなります。


文字列にもiter()を使える

iter()はリストだけではなく、文字列にも使用できます。

text = "Python"

iterator = iter(text)

print(next(iterator))
print(next(iterator))
print(next(iterator))

実行結果:

P
y
t

文字列も1文字ずつ取り出せる反復可能オブジェクトです。


タプルにもiter()を使える

タプルにもiter()を使えます。

data = ("Apple", "Banana", "Orange")

iterator = iter(data)

print(next(iterator))
print(next(iterator))
print(next(iterator))

結果:

Apple
Banana
Orange

辞書にiter()を使う

辞書にiter()を使った場合、デフォルトではキーを順番に取り出します。

user = {
    "name": "Taro",
    "age": 20
}

iterator = iter(user)

print(next(iterator))
print(next(iterator))

結果:

name
age

辞書の値を取り出したい場合は、values()を使います。

user = {
    "name": "Taro",
    "age": 20
}

iterator = iter(user.values())

print(next(iterator))
print(next(iterator))

結果:

Taro
20

iter()でリストを直接変更するわけではない

iter()を使っても、元のリストが変更されるわけではありません。

numbers = [10, 20, 30]

iterator = iter(numbers)

print(numbers)

結果:

[10, 20, 30]

iter()はリストそのものを別のデータに変換するのではなく、リストの要素を順番に取得するためのイテレータを作ります


iter()の第2引数を使う方法

iter()には、少し特殊な使い方があります。

次のように、2つの引数を指定できます。

iter(callable, sentinel)

この形式では、指定した関数を繰り返し呼び出し、戻り値がsentinelと一致するまで値を取得します。

例えば、次のコードです。

def get_number():
    return 1

iterator = iter(get_number, 0)

この場合、

get_number()

を繰り返し呼び出します。

関数の戻り値が0になったところで終了します。

実務では、ファイルや入力処理などで利用されることがあります。


iter()list()の違い

iter()list()は役割が異なります。

numbers = [10, 20, 30]

iterator = iter(numbers)

iter()はイテレータを作ります。

一方、

iterator = iter(numbers)

numbers2 = list(iterator)

print(numbers2)

list()はイテレータなどから要素を取り出して、リストを作ります。

つまり、

iter()
→ イテレータを作る

list()
→ 要素を集めてリストを作る

という違いがあります。


iter()の実践例

例えば、リストの要素を1つずつ処理したい場合は、次のように書けます。

fruits = ["apple", "banana", "orange"]

iterator = iter(fruits)

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

結果:

apple
banana
orange

ただし、通常はこのような処理を書くよりも、for文を使うほうが簡潔です。

fruits = ["apple", "banana", "orange"]

for fruit in fruits:
    print(fruit)

そのため、iter()普段の処理で直接使うというより、イテレータの仕組みを理解するときに重要な関数と考えるとよいでしょう。


iter()を使うメリット

iter()を使う主なメリットは、データを一度にすべて処理するのではなく、必要なタイミングで1つずつ取得できることです。

特に大量のデータを扱う場合、イテレータやジェネレータの仕組みが重要になります。

例えば、

iterator = iter(numbers)

としておけば、必要になったときに

next(iterator)

で次のデータを取得できます。

このような仕組みは、Pythonのメモリ効率や遅延評価を理解するうえでも重要です。


iter()まとめ

Pythonのiter()は、反復可能なオブジェクトからイテレータを作るための組み込み関数です。

基本的な使い方は次のとおりです。

numbers = [10, 20, 30]

iterator = iter(numbers)

print(next(iterator))
print(next(iterator))
print(next(iterator))

結果:

10
20
30

ポイントをまとめると、

  • iter()はイテレータを作る

  • next()はイテレータから次の値を取得する

  • データがなくなるとStopIterationが発生する

  • for文も内部でイテレータの仕組みを利用している

  • リスト、タプル、文字列、辞書などに利用できる

  • Pythonの反復処理を理解するうえで重要な関数

となります。

Python初心者の場合、まずは**「iter()でイテレータを作り、next()で1つずつ取り出す」**と覚えておけば十分です。


あわせて読みたい

iter()は、Pythonの組み込み関数の1つです。ほかの関数・メソッドとあわせて確認したい方は、次の一覧ページをご覧ください。

プログラミング学習に興味がある方は、まずは無料体験会へ

無料体験会・お申し込みはこちら