poythonで決められた処理を何度も繰り返し実行したいと考えたことはありませんか?
同じような処理を何度もプログラムとして書くのは非効率ですし、見た目が美しくありません。
そこで使用するのがfor文です。
for文を使用することで決められた処理を何度も繰り返すことができ、見た目もきれいにすることができます。
この記事ではfor文についての書き方や覚えておくと助かる機能について解説していきます。
for文の基本
まずfor文の基本について解説していきます。
先ほども記載しましたが、for文は決められた処理を何度も繰り返したいときに使用することでその効力を発揮します。
for文の構文の書き方は下記の通りとなります。
for 変数 in オブジェクト:
繰り返す処理
オブジェクトにはリストや文字列、タプルなどの順番に要素を取り出すことが可能なオブジェクトを指定します。
具体的な使用方法は下記の通りとなります。
【使用方法】
meal=("カレー","焼肉","寿司","うどん","牛丼")
for i in meal:
print(i)
【実行結果】
寿司
カレー
焼肉
うどん
牛丼
上記コードはmeal変数にあるリストを一つづつ取り出しiにいれて、それを出力しています。
break文、continue文
for文がとても便利な機能であるということは分かっていただけたかと思いますが、そんなfor文をさらに使い勝手よくしてくれる機能があります。
それがbreak文、continue文です。
以前下記if文の記事で解説しましたので、詳細はそちらの記事を読んでいただければ理解していただけると思います。
【python】if文(条件分岐)の使い方 | エンジニアKISARAGIの備忘録 (kisaragi-it.com)
一応簡単に解説しますとbreak文はfor文などのループ処理から抜けることができるもので、continue文は現在実行している処理を飛ばすことができるというものです。
その他覚えておくべき機能
次に解説するのはfor文を使用するなら、知っておいて損のない関数や機能についてです。
下記4つの機能、関数について解説していきます。
- スライス
- range関数
- for-else文
- enumerate関数
スライス
まずスライスについて解説していきます。
スライスはオブジェクトから指定範囲内の要素を取得するのに使用可能な機能です。
構文は下記の通りとなります。
for 変数 in オブジェクト[開始位置:終了位置:ステップ]:
開始位置、終了位置は名前の通り切り取りたい範囲を指定します。
ただリスト等は開始インデックスは0から始まりますので、その点を考慮して記載するようにしてください。
また終了位置も実際に切り取りたい値のインデックス+1まで指定するようにしてください。
そしてステップというのは取得する要素の間隔です。
言葉で説明してもわかりずらいと思いますので、図を使って説明します。
まず下記のようなコードとその結果があったとします。
【例】
meal=("カレー","焼肉","寿司","うどん","牛丼")
for i in meal[1:5:2]:
print(i)
【実行結果】
焼肉
うどん
そしてリスト変数に下記のように線を引きます。
これが切り取るときの位置を表しています。
今回のコードですと「1:5:2」となっているので開始位置:1、終了位置:5となっていますので、焼肉~牛丼までを取得することができます。
ただしステップ:2という値があります。
仮に下記のように取得するのを1~2の焼肉、2~3の寿司、3~4のうどん、4~5の牛丼とします。
そうするとステップが2ということで1つ目の値である「焼肉」が取得されたら、そこから2つ目の値を次は取得します。
つまり「うどん」です。
このような取得方法のため先ほどのコード結果は「焼肉」と「うどん」になったというわけです。
range関数
次にご紹介するのはrange関数です。
ここまでご紹介してきたfor文は事前にリストや文字列等のすでにループ回数の決まっているモノばかりでした。
しかし時々リスト等は使用せずに指定した回数分だけループをさせたいとなります。
そのような時に使用できるのがrange関数です。
構文としては下記のようになります。
for 変数 in range(ループ回数):
そして実際の使用例とその結果は下記となります。
【使用方法】
a=0
for j in range(10):
a=a+1
print(a)
【実行結果】
1
2
3
4
5
6
7
8
9
10
for-else文
次にご紹介するのはfor-else文についてです。
elseと聞くとif文を思い出す方もいると思いますが、機能としてはif文のelseと同じような感じです。
for文が完了したら最後に実行するというものです。
構文としては下記の通りfor文の後にelse文を記載するだけです。
for 変数 in オブジェクト:
繰り返し処理
else:
最後に実行する処理
このelse文をどのような時に使用するかというと正常にループが完了したかどうかを確認する際に使用します。
a=0
for j in range(10):
for k in range(20):
a=a+1
print(a)
else:
print("end")
例えば上記のようなコードがあったとします。
そしてどこかのタイミングでエラーが発生し、コードがまともに実行することができませんでした。
そのような時にelseを使用することでどのタイミングでエラーが発生しているのかをかなり絞り込むことができます。
また「別にelseを使用しなくてもfor文完了後に字下げをせずに処理を記述すれば実行できるのではないか?」という疑問を持たれる方もいるはずです。
確かにそれでもいいですが、else文と字下げせず処理を記述するのとでは決定的な違いがあります。
else文はbreak文の影響を受けるということです。
break文を記述するとelse文も一緒にループから抜けます。
半面字下げしない処理ですとループを抜けた後にその処理を実行してくれるため、使用箇所によって使い分けることができるわけです。
enumerate関数
最後にご紹介するのはenumerate関数についてです。
enumerate関数は値とインデックスと同時に取得することができます。
構文は下記のようになります。
for 変数1(インデックス),変数2(要素) in enumerate(オブジェクト):
そして実際の使用例と実行結果は下記のとおりです。
【使用例】
meal=("カレー","焼肉","寿司","うどん","牛丼")
for value,index in enumerate(meal):
print(value,index)
【実行結果】
0 カレー
1 焼肉
2 寿司
3 うどん
4 牛丼
まとめ
この記事ではpythonのfor文について解説してきました。
- for文の基本
- break文、continue文
- その他覚えておくべき機能
for文を使用することで、コードは見やすく、きれいに書くことができるようになります。
また何度も同様の処理を書くとなるととても面倒です。
その面倒な作業をたった数行で行うことができるようになりますので、使わない理由はありません。
以上で今回の解説は終了となります。
コメント