Python iter() 関数

Python3 組み込み関数


iter()Python で反復可能オブジェクトをイテレータに変換するための組み込み関数です。

イテレータは Python において非常に重要な概念であり、iter()任意の反復可能オブジェクトからイテレータを作成でき、関数を使用でき、next()要素を1つずつアクセスします。

単語の説明: iter 是 iterator(迭代器)的缩写。


基本構文とパラメータ

構文形式

iter(object)
iter(object, sentinel)

パラメータの説明

  • パラメータ object:
    • 型: 反復可能オブジェクト
    • 説明: イテレータに変換するオブジェクト。
  • パラメータ sentinel(省略可能)
    • 型: 任意の値
    • 説明: センチネル値。この値に達すると反復を停止します。

関数の説明

  • 戻り値: イテレータオブジェクトを返します。
  • 特徴: イテレータは前方にのみ進むことができ、後退できません。

例

例1:基本的な使い方

例

# リストからイテレータを作成
my_list = [1, 2, 3]
iterator = iter(my_list)

# next() を使用して要素を取得
print(next(iterator))  # 出力: 1
print(next(iterator))  # 出力: 2
print(next(iterator))  # 出力: 3

# さらに呼び出すと StopIteration が発生します
# print(next(iterator))

# for ループで反復することもできます
my_list = [1, 2, 3]
for item in iter(my_list):
    print(item, end=" ")
# 出力: 1 2 3

実行結果の予想:

1
2
3
1 2 3

コードの解説:

  1. iter()反復可能オブジェクトをイテレータに変換します。
  2. イテレータは一度しか反復できず、使い切ると再作成する必要があります。

例2:文字列とタプルから作成

例

# 文字列イテレータ
s = "hello"
iterator = iter(s)

print(next(iterator))  # 出力: h
print(next(iterator))  # 出力: e
print(next(iterator))  # 出力: l

# タプルイテレータ
t = (1, 2, 3)
iterator = iter(t)

print(next(iterator))  # 出力: 1
print(next(iterator))  # 出力: 2

実行結果の予想:

h
e
l
1
2

コードの解説:

  • 文字列イテレータは毎回1文字を返します。
  • タプルイテレータは毎回1つの要素を返します。

例3:sentinel パラメータを使用

例

# sentinel を使用してカスタムイテレータを作成
def fibonacci():
    n = 0
    while True:
        yield n
        n += 1
        if n > 10:
            raise StopIteration

# sentinel を使用(特定の値を読み取ったら停止)
class ReadUntil:
    def __init__(self, data, stop_at):
        self.data = data
        self.stop_at = stop_at
        self.index = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.index >= len(self.data):
            raise StopIteration
        value = self.data[self.index]
        if value == self.stop_at:
            raise StopIteration
        self.index += 1
        return value

# イテレータを作成し、"END" に達したら停止
data = ["a", "b", "c", "END", "d"]
iterator = iter(lambda: ReadUntil(data, "END"), None)

for item in iterator:
    print(item, end=" ")
# 出力: a b c

実行結果の予想:

a b c

sentinel パラメータはカスタム反復動作を作成するために使用され、通常は callable と一緒に使用します。


Python3 組み込み関数


その他の拡張