プログラミングをする上で、同じ処理を繰り返し行うケースは必ずと言っていいほど発生します。
そのため、いずれの言語でも繰り返し処理を行うための制御構文が用意されており、Pythonにも同じように 「for文」 と呼ばれる構文が存在します。
今回の記事では、Pythonでの for文の使い方についての基礎的な内容から、for文で活用できる様々な応用方法まで、詳しく解説していきたいと思います。
ぜひ、最後まで読んで参考にしてみてくださいね。
for文とは?
for文とは、繰り返し処理を行うことができる制御構文の1つです。
Pythonに限らず、様々なプログラミング言語に搭載されている機能の1つでもあり、配列内の各要素に対して処理を行いたい場合などに多く活用されています。
for文を使うことで、各要素に対して同じ処理を繰り返し行いたい際に、少ないコードで処理を実装できるようになります。
pythonでのfor文の使い方
for文を使用する際の記述方法には、大きく分けて2通りの書き方が存在します。
それぞれの方法について、順に見ていきましょう。
基本の書き方1: for … in range(n)
1つ目の記述方法は、カウント変数を使用して処理を行う方法です。
任意の回数分だけ処理を行いたい場合には、range関数を使用してループ回数を指定します。
基本構文は以下の通りです。
【基本構文】
for カウント変数名 in range(ループ回数):
処理内容
指定したカウント変数にはループのたびに増減されていくカウント数が格納されるため、この変数をもとに値の変更を行なったり、カウント変数を配列のインデックス番号の指定に使用したりすることができます。
【サンプルコード】
list = ["a", "b", "c"]
for i in range(3):
print(str(i) + ":" + list[i])
【実行結果】
0:a
1:b
2:c
通常、カウント変数は0からカウントが開始され、1つずつ値が繰り上がっていきます。
ただし range関数では、カウント数の範囲や増減値を任意の数に指定することもできます。
【サンプルコード】
for i in range(2, 7, 2):
print(i)
【実行結果】
2
4
6
それぞれ、開始数値、終了数値、増減値の順番で指定を行います。
終了数値に関してはループ処理の範囲内には含まれないため、指定の際には注意が必要です。
カウント数の範囲や増減値にはマイナスの数値を指定することもできるため、配列の末尾から要素を参照するなどといった方法に応用することもできます。
【サンプルコード】
list = ["a", "b", "c"]
for i in range(2, -1, -1):
print(str(i) + ":" + list[i])
【実行結果】
2:c
1:b
0:a
基本の書き方2: for item in items
2つ目の記述方法は、リストや辞書などのイテラブル(反復可能)オブジェクト内の要素の数だけ、順に要素を取り出してループする処理方法です。
使用する際の構文は、以下のように記述します。
【基本構文】
for 変数名 in イテラブルオブジェクト:
処理内容
先ほどはループ回数が変数に格納されていましたが、この記述方法の場合は各要素がそのまま変数に代入されます。
【サンプルコード】
list = ["a", "b", "c", "d", "e"]
for val in list:
print(val)
【実行結果】
a
b
c
d
e
for文を使いこなす5つのキーワード
for文で処理を行う際に、「この条件の時だけ処理をスキップしたい!」 といったケースや、「この条件に達した時点で処理を中断させたい!」 といったケースなど、様々な状況が発生することがあると思います。
ここからは、for文をさらに使いこなすための応用的な処理について、以下の5つの方法を紹介していきたいと思います。
- break文
- continue文
- else文
- スライス
- enumerate関数
それぞれ、順に見ていきましょう。
break文でfor文の処理を途中で抜ける
ループ処理を途中で中断したい場合に使用するのが、break文です。
各ループごとに条件分岐を行い、特定の条件に達した時点で処理を終了させる場合によく使用されます。
以下のサンプルコードで実際の動きを見てみましょう。
【サンプルコード】
list = ["東京","大阪","青森","広島","沖縄"]
for place in list:
print(place)
if place == "青森":
print("ループ処理を中断します")
break
【実行結果】
東京
大阪
青森
ループ処理を中断します
リストの要素が分岐条件に達した時点で、ループ処理が中断されているのが結果から分かると思います。
このように、任意の条件に応じて処理を中断させる場合には、break文を使用します。
continue文で処理をスキップする
ループ処理の完全な中断ではなく、特定のループ処理のみスキップさせたい場合には、continue文を使用します。
先ほどの break文と同様に、if文と組み合わせて使用するのが一般的です。
サンプルコードで実際の動きを見てみましょう。
【サンプルコード】
list = ["東京", "大阪", "青森", "広島", "沖縄"]
for place in list:
if place == "青森":
print("ループ処理をスキップします")
continue
print(place)
【実行結果】
東京
大阪
ループ処理をスキップします
広島
沖縄
条件を満たした際には continue以降の処理がスキップされていますが、break文とは異なりその後ループ処理は引き続き実行されているのが分かると思います。
処理内容に応じて、それぞれ使い分けるといいでしょう。
else文でループの最後に処理を実行する
上記の2つは処理を中断したりスキップさせるための方法でしたが、反対に、ループ完了後の処理を追加したい場合には else文を使用します。
ループ処理が正常に終了したかの確認など、完了時にのみ行いたい処理がある場合に便利な方法です。
サンプルコードを見てみましょう。
【サンプルコード】
list = ["東京","大阪","青森","広島","沖縄"]
for place in list:
print(place)
else:
print("ループ処理が正常に完了しました")
【実行結果】
東京
大阪
青森
広島
沖縄
ループ処理が正常に完了しました
先ほどの break文と組み合わせて、以下のように値の確認に使用したりすることも可能です。
【サンプルコード】
list = [15, 20, 30, 5, 25]
for num in list:
print(num)
if num < 10:
print("10未満の数値が混じっています")
break
else:
print("全て10以上の数値です")
【実行結果】
15
20
30
5
10未満の数値が混じっています
スライスで一部の要素だけを取り出す
タプルやリストなどのオブジェクト内の要素を取り出す際に、全ての要素ではなく一部のみを選択したい場合の方法として、コロンを使って表すスライスという記述方法があります。
range関数を使った記述方法でも似たような処理を行うことは可能ですが、変数に要素を直接格納できる利点があるため、両方とも覚えておくと便利です。
以下のサンプルコードを例に、具体的な記述方法について見ていきましょう。
【サンプルコード】
list = ["東京", "大阪", "青森", "広島", "沖縄"]
for place in list[1:4]:
print(place)
【実行結果】
大阪
青森
広島
スライスを使用する際は、上記のように 「開始位置:終了位置」 の順でインデックス番号の指定を行います。
開始位置と終了位置は省略可能で、開始位置を省略した場合は先頭から要素を取得し、終了位置を省略した場合は末尾までを自動で取得します。
指定する際の注意点として、インデックス番号は0から開始する点と、終了位置に指定したインデックス番号の要素はループ処理に含まれない点が挙げられます。
番号を指定する際は、上記の2点に注意するようにしましょう。
enumerate関数でループのインデックスを取り出す
enumerate関数を使用すると、イテラブルオブジェクトの要素と同時にインデックス番号を取得することができます。
for文で enumerate関数を使用する場合は、以下のような構文で記述します。
【基本構文】
for インデックス変数名, 要素変数名 in enumerate(オブジェクト):
処理内容
【サンプルコード】
list = ["東京", "大阪", "青森", "広島", "沖縄"]
for index, place in enumerate(list):
print(str(index) + ":" + place)
【実行結果】
0:東京
1:大阪
2:青森
3:広島
4:沖縄
また、通常の場合は0から数えられるインデックス番号ですが、enumerate関数では数える際の開始数値を任意の数に指定することができます。
【サンプルコード】
list = ["東京", "大阪", "青森", "広島", "沖縄"]
for index, place in enumerate(list, 1):
print(str(index) + ":" + place)
【実行結果】
1:東京
2:大阪
3:青森
4:広島
5:沖縄
ただし、上記の結果を見ると分かるように、取得する要素の位置を指定するものではないことに注意が必要です。
まとめ
いかがでしたか?今回は、Pythonでの for文の使い方について解説をしました。
繰り返し処理は、プログラミングをする上では必須となる構文の代表格です。
実際の開発現場においても、for文を一切使用しないケースはほとんどの確率でありえません。
大まかな処理の流れについては他の言語にも活用できる知識になりますので、何度も使用しながらfor文の使い方をマスターしていきましょう。
Pythonの勉強方法は?
書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。
ただ、Pythonに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。
プログラミングスクールならテックマニアがおすすめ!

ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。
<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~
このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。