このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Python入門】イテラブルに適用する関数

イテラブルに適用する関数
Pythonのイテラブルは、リスト、タプル、文字列、辞書、集合、さらにはrangeオブジェクトなど、反復可能なデータ構造を指します。これらに対して適用できる関数は、データのサイズ取得、並べ替え、要素の変換、選別、そして反復処理など、幅広い操作を簡潔に実装するための強力なツールとなります。
ここでは、イテラブルに適用する代表的な関数(len、range、enumerate、reversed、zip、map、filter、all、any、iter、next)について、各関数の基本的な使い方と特徴を、表や具体例を交えて解説します。

プログラムのダウンロード
「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。
1.基本的なイテラブル関数
1.1. len関数
len関数は、文字列、リスト、タプル、集合、辞書、rangeオブジェクトなどの長さ(要素数)を返します。
【構文】
len(オブジェクト)
例 | 説明 |
---|---|
len("Hello") | 文字列の長さ(5) |
len([1, 2, 3]) | リストの要素数(3) |
【例】
print("Length of 'Hello':", len("Hello")) # 出力: 5
print("Length of [1, 2, 3]:", len([1, 2, 3])) # 出力: 3
実行結果
Length of 'Hello': 5
Length of [1, 2, 3]: 3
解説
len("Hello") は文字数5を返し、リストの場合も同様に要素数が返されます。
1.2. range関数
range関数は、整数のシーケンス(rangeオブジェクト)を生成します。実際にはクラスですが、for文などでの反復処理に頻繁に用いられます。
【構文】
range(終了値) → 0 から 終了値-1
range(開始値, 終了値) → 開始値から 終了値-1
range(開始値, 終了値, ステップ) → 指定した間隔で数値を生成
【例】
# 0から9までの整数を生成
print(list(range(10))) # 出力: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 5から14までの整数を生成
print(list(range(5, 15))) # 出力: [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
# 0から20まで、2ずつ増加する整数を生成
print(list(range(0, 21, 2))) # 出力: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
実行結果
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
解説
range関数は開始値、終了値、ステップを指定することで柔軟に整数のシーケンスを生成します。
1.3. enumerate関数
enumerate関数は、イテラブルから要素を取り出す際に、各要素のインデックス(順番)も同時に取得できる機能です。
【構文】
enumerate(イテラブル, 開始値)
例 | 説明 |
---|---|
enumerate(['a', 'b', 'c']) | 0から順に (0, 'a'), (1, 'b'), (2, 'c') |
enumerate(['a', 'b', 'c'], 1) | 1から順に (1, 'a'), (2, 'b'), (3, 'c') |
【例】
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits, 1):
print(f"Item {index}: {fruit}")
実行結果
Item 1: apple
Item 2: banana
Item 3: cherry
解説
この例では、fruitsリストの各要素とその順番が1からカウントされ、"Item 1: apple" などの形式で出力されます。
1.4. reversed関数
reversed関数は、イテラブルの要素を逆順に反復できるイテレータを返します。
【構文】
reversed(イテラブル)
【例】
numbers = [1, 2, 3, 4, 5]
print("Reversed list:", list(reversed(numbers))) # 出力: [5, 4, 3, 2, 1]
実行結果
Reversed list: [5, 4, 3, 2, 1]
解説
reversed関数は、元のリストを変更せず、逆順に要素を取り出すイテレータを返します。
2.複数のイテラブルを扱う関数
2.1. zip関数
zip関数は、複数のイテラブルから同時に要素を取り出し、対応する要素をタプルにまとめたイテレータを返します。
【構文】
zip(イテラブル1, イテラブル2, …)
例 | 説明 |
---|---|
zip([1, 2, 3], ['a', 'b', 'c']) | [(1, 'a'), (2, 'b'), (3, 'c')] |
【例】
names = ["apple", "orange", "grape"]
prices = [100, 150, 120]
for name, price in zip(names, prices):
print(f"{name} is {price} yen")
実行結果
apple is 100 yen
orange is 150 yen
grape is 120 yen
解説
zip関数は、複数のリストの各要素をタプルにまとめ、"apple is 100 yen" などの出力を生成します。
3.イテラブルの各要素に関数を適用する関数
3.1. map関数
map関数は、指定した関数をイテラブルの全ての要素に適用し、その結果を返すイテレータを生成します。
【構文】
map(関数, イテラブル, …)
【例】
words = ["pineapple", "kiwi", "strawberry"]
lengths = list(map(len, words))
print("Lengths:", lengths) # 出力: [9, 4, 10]
実行結果
Lengths: [9, 4, 10]
解説
map関数は、wordsリストの各要素にlen関数を適用して、文字数のリストを生成します。
3.2. filter関数
filter関数は、イテラブルの各要素に対して条件関数を適用し、条件がTrueとなる要素だけを返すイテレータを生成します。
【構文】
filter(関数, イテラブル)
【例】
data = ["", "sun", "moon", "", "stars"]
non_empty = list(filter(len, data))
print("Non-empty items:", non_empty) # 出力: ['sun', 'moon', 'stars']
実行結果
Non-empty items: ['sun', 'moon', 'stars']
解説
filter関数は、各要素に対してlen関数を適用し、空文字列(長さ0)はFalseと判断されるため、非空の文字列のみが抽出されます。
4.ブール判定とイテレータ操作の関数
4.1. all関数とany関数
all関数はイテラブルの全要素がTrueである場合にTrueを返し、any関数は少なくとも1つの要素がTrueであればTrueを返します。これらは内包表記と組み合わせると、条件チェックに便利です。
【構文】
all(イテラブル)
any(イテラブル)
例 | 説明 |
---|---|
all(x > 0 for x in [1, 2, 3]) | 全要素が0より大きければTrue |
any(x < 0 for x in [1, 2, -3, 4]) | 1つでも負の値があればTrue |
【例】
scores1 = [85, 90, 78, 92]
scores2 = [85, 45, 78, 92]
print("All scores >= 50 in scores1:", all(x >= 50 for x in scores1)) # True
print("Any score < 50 in scores2:", any(x < 50 for x in scores2)) # True
実行結果
All scores >= 50 in scores1: True
Any score < 50 in scores2: True
解説
all関数とany関数を使うと、条件を満たすかどうかを簡単に判定でき、テストやフィルタリングに活用できます。
4.2. iter関数とnext関数
iter関数は、イテラブルからイテレータを生成し、next関数はそのイテレータから次の要素を順に取り出します。
【構文】
iter(イテラブル)
next(イテレータ)
【例】
numbers = [10, 20, 30]
it = iter(numbers)
print("First element:", next(it)) # 10
print("Second element:", next(it)) # 20
print("Third element:", next(it)) # 30
# ここでさらにnext(it)を呼ぶとStopIterationが発生
実行結果
First element: 10
Second element: 20
Third element: 30
解説
- iter関数はリストからイテレータを生成し、next関数を呼ぶたびに順番に要素が返されます。
- 全要素を取り出した後にnextを呼ぶと、StopIteration例外が発生します。
まとめ
Pythonのイテラブルに適用する関数は、データ構造を操作する上で極めて重要です。
- len、range、enumerate、reversedは基本的なイテラブルの情報取得や反復処理に使われます。
- zip関数を利用すれば、複数のイテラブルを同時に扱うことができ、mapとfilterは各要素に対する処理や選別を容易にします。
- all、anyは条件判定に役立ち、iterとnextはイテレータの細かい制御を可能にします。
これらの関数を適切に活用することで、Pythonプログラミングにおけるデータ操作がより効率的かつ柔軟になり、コードの可読性と保守性が向上します。