- Python の for ループ処理がよくわからない…
このような悩みにお答えします。
Python のループ処理で最もメジャーなものがfor
文です。
基本的にはループ処理のほとんどがfor
で書けるので、特別な理由がなければfor
文を使うことが多いと思います。
ごく基本的な文法ではあるものの、細かい事項まで見ていくと意外と奥が深いです。
本記事を通して、for
ループをマスターしていきましょう!
for を使った基本的なループ処理の方法
Python でもっともよく使われるループ処理がfor
を使った方法です。
ここでは、以下の内容をご説明します。
- 基本的な
for
文の書き方 - 途中でループを抜ける方法
- 処理をスキップする方法
- 正常終了後の処理を追加する
- インデックスカウンタを回す
それぞれ、みていきましょう。
基本的なfor
文の書き方
まずはコード例からfor
文の書き方を確認しましょう。
area_list = ["Asia", "Africa", "America", "Europe"]
for area in area_list:
print(area)
上記ではarea_list
がarea
に順次代入されます。
出力結果は以下になります。
Asia
Africa
America
Europe
途中でループを抜ける方法
途中でループを抜けさせる場合には、break
を使います。
area_list = ["Asia", "Africa", "America", "Europe"]
for area in area_list:
if area == "Africa":
break
print(area)
上記の例では、area
がAfrica
になった場合にループを抜けるようになっています。
Asia
つまり、Africa
の前のインデックスであるAsia
だけがprint()
された後にループを抜けることになります。
処理をスキップする方法
ある処理だけをスキップする場合にはcontinue
を使います。
area_list = ["Asia", "Africa", "America", "Europe"]
for area in area_list:
if area == "Africa":
continue
print(area)
つまり、上記の例ではAfrica
だけがスキップ対象となります。
出力結果は以下です。
Asia
America
Europe
正常終了後の処理を追加する
ループが正常に終了した時の処理は、else
で表現できます。
正常終了とは「for
ループがリストを消化し切って自然に終了した場合」と言い換えることができます。
つまり、break
で強制的にループを抜ける場合にはelse
ブロックが実行されません。
area_list = ["Asia", "Africa", "America", "Europe"]
for area in area_list:
print(area)
else:
print("Successfully for loop.")
実行結果は以下です。
Asia
Africa
America
Europe
Successfully for loop.
continue
が存在する場合も考えてみましょう。
area_list = ["Asia", "Africa", "America", "Europe"]
for area in area_list:
if area == "Africa":
continue
print(area)
else:
print("Successfully for loop.")
continue
では、プログラムは正常に最後まで到達するのでelse
以下が実行されます。
Asia
America
Europe
Successfully for loop.
break
は正常終了とは見做されず、else
以下は実行されません。
area_list = ["Asia", "Africa", "America", "Europe"]
for area in area_list:
if area == "Africa":
break
print(area)
else:
print("Successfully for loop.")
実行結果にSuccessfully for loop.
の文字列はありません。
Asia
for, range()を使ってインデックスカウンタを回す
インデックスカウンタを回すにはrange()
関数を使います。
基本的な方法
最も基本的なインデックスカウンタの回し方は以下です。
for i in range(5):
print(i)
出力結果は以下になります。
0
1
2
3
4
インデックス開始番号を指定する方法
range()
関数の第一引数に「開始番号」を、第二引数に「終了番号」を指定できます。
for i in range(1, 5):
print(i)
出力結果は以下になります。
1
2
3
4
range()
関数では、終了値は含まれません。
そのため、第二引数に5
としても4
までが表示されることになります。
インデックス生成のステップ間隔を指定する
range()
関数の第一引数に「開始番号」を、第二引数に「終了番号」を、第三引数に「ステップ間隔」を指定します。
for i in range(1, 5, 2):
print(i)
出力結果は以下となります。
1
3
1
から4
まで数値を、2
ずつ値を増やしていくことになります。
リストをループしながらインデックスも取得
enumerate()関数を使うと、リストの要素と同時にインデックスを生成できます。
area_list = ["Asia", "Africa", "America", "Europe"]
for i, area in enumerate(area_list):
print(i, area)
以下のように、リストの要素とともにインデックス番号が出力されます。
0 Asia
1 Africa
2 America
3 Europe
なお、enumerate()
関数の第二引数に数値を渡すと始まりの数値が指定できます。
area_list = ["Asia", "Africa", "America", "Europe"]
for i, area in enumerate(area_list, 1):
print(i, area)
上記では1始まりにしたので、出力結果は以下になります。
1 Asia
2 Africa
3 America
4 Europe
for ループをマスターして反復処理ができるようになろう!
ここまででfor
ループの書き方をご紹介してきました。
- for を使った基本的なループ処理の方法
- for, range()を使ってインデックスカウンタを回す
基本的なループ処理は今回ご紹介したもので十分対応可能です。
本ブログではPythonに関する記事を順次アップしております。ぜひ、他記事の方もご覧になってみてください。
コメント