【6日でできるPython入門】繰り返し for文②

 for文は、Pythonにおける繰り返し処理の中心的な構文です。「繰り返し for文②」では、for文の基本だけでなく、より実践的かつ効率的な繰り返し処理を行うためのテクニックを学びます。
 ここでは、単純なリストやタプルの繰り返しを超えて、rangeenumeratezip などの便利な組み込み関数やイディオムを活用したfor文の使い方を解説します。これらを身につけることで、Pythonらしい洗練されたコードを書けるようになります。


1.指定回数の繰り返し

 Pythonのfor文は、「○回繰り返す」といった回数指定の繰り返しにも柔軟に対応しています。他言語でよくある特殊な構文を使わず、range関数を組み合わせるだけで実現できます。

1.1. range関数で回数指定の繰り返し

例えば「1から5まで」の数字を順番に出力したい場合、次のように書けます。

ファイル名: lesson15-1.py

# 1から5まで繰り返し、「こんにちは!私は○回目の挨拶です」と表示する
for i in range(1, 6):
    print(f"こんにちは!私は{i}回目の挨拶です")

実行結果

こんにちは!私は1回目の挨拶です
こんにちは!私は2回目の挨拶です
こんにちは!私は3回目の挨拶です
こんにちは!私は4回目の挨拶です
こんにちは!私は5回目の挨拶です

解説

  • range(1, 6) は、1以上6未満、つまり1, 2, 3, 4, 5 の5つの値を生成します。
  • print関数でf文字列(フォーマット文字列)を使い、繰り返し回数を日本語メッセージに埋め込んでいます。

1.2. range関数のステップ指定

range関数には開始値、終了値、増分値(ステップ)を指定できます。
例えば「2から10まで2ずつ増やして」繰り返す場合は以下のようになります。

ファイル名: lesson15-2.py

# 2から10まで、2ずつ増やして偶数を表示する
for num in range(2, 11, 2):
    print(f"{num}は偶数です")

実行結果

2は偶数です
4は偶数です
6は偶数です
8は偶数です
10は偶数です

解説

  • range(2, 11, 2) の3つめの引数「2」はステップ(増分)を意味し、2, 4, 6, 8, 10 と進みます。

2.rangeオブジェクトの正体とリスト変換

range関数が返すオブジェクトの正体や、リストへの変換方法についても知っておきましょう。

2.1. rangeオブジェクトの正体

ファイル名: lesson15-3.py

numbers = range(1, 6)
print(numbers)
print(type(numbers))

実行結果

range(1, 6)
<class 'range'>

解説

  • rangeリストそのものではなく、range型という特殊なオブジェクトです。
  • メモリ効率が良く、実際に使うときだけ値を生成します。

2.2. リストに変換する

「すべての値を一気にリストとして扱いたい」ときは、list関数を使います。

ファイル名: lesson15-4.py

numbers_list = list(range(1, 6))
print(numbers_list)
print(type(numbers_list))

実行結果

[1, 2, 3, 4, 5]
<class 'list'>

解説

  • list(range(1, 6)) で、rangeオブジェクトがリスト(配列)に変換されます。

3.enumerateによるインデックス付き繰り返し

リストの要素だけでなく、その位置(インデックス)も一緒に使いたい場合はenumerateが便利です。

3.1. enumerateの使い方

ファイル名: lesson15-5.py

fruits = ['りんご', 'みかん', 'バナナ', 'ぶどう']
for idx, fruit in enumerate(fruits):
    print(f"{idx + 1}番目の果物は{fruit}です")

実行結果

1番目の果物はりんごです
2番目の果物はみかんです
3番目の果物はバナナです
4番目の果物はぶどうです

解説

  • enumerate(fruits)は、(インデックス, 要素)のペアを返します。
  • インデックスは0から始まるため、日本語表記で「○番目」としたい場合はidx + 1とします。

4.zipで複数リストの同時ループ

複数のリストを同時に繰り返し処理したいときはzip関数が便利です。

4.1. zipの使い方

ファイル名: lesson15-6.py

names = ['佐藤', '鈴木', '高橋']
scores = [85, 90, 78]
for name, score in zip(names, scores):
    print(f"{name}さんの点数は{score}点です")

実行結果

佐藤さんの点数は85点です
鈴木さんの点数は90点です
高橋さんの点数は78点です

解説

  • zip(names, scores)は、それぞれのリストの要素を1組ずつまとめてタプルとして返します。
  • 長さが異なる場合、短いほうに合わせて繰り返されます。

まとめ:for文でよく使う組み込み関数

関数名主な用途
range指定回数の繰り返しfor i in range(5): ...
enumerateインデックス付きでリストを繰り返すfor i, v in enumerate():
zip複数リストを同時に繰り返すfor a, b in zip(): ...