【完全網羅】pythonのfor文(forループ)使い方まとめ

for文(forループ)は繰り返し処理をする際に用いられ、この処理を反復処理と言います。

繰り返し処理といえば、for文の他にwhile文もありますが、両者の違いをまとめると次のようになります。

  • for文:簡単な計算処理に向いている。
  • while文:複雑な計算処理に向いている。

さらに、for文とまつわる様々な関数、また状況によってはfor文よりもオススメな関数をいくつかご紹介します。

for文を網羅しましたので、ぜひpythonのfor文ライフに活用してください。

pythonのfor文とは

for文は繰り返し処理に優れており、下記が基本的な書き方になります。


python

# for文の基本的な書き方 for 変数 in データの集まり: 処理

for文は、「データの集まり」から「データを1つずつ取り出す」という処理が基本になります。

例えば、「Nakazawa(データの集まり)」から「1単語ずつ書く(データを1つずつ取り出す)」場合、次のようなコードになります。


python

# Nakazawaというデータをfor文で指定 for name in 'Nakazawa': # 変数 name を用いて、Nakazawaを出力 print(name) # 出力結果 # N # a # k # a # z # a # w # a

もちろん、「Nakazawa」を1文字ずつ出力することは金輪際ないと思いますが、「データの集まり」から「データを1つずつ取り出す」という意味が理解できたかと思います。

fpr文の基本的な知識

for文と一緒に用いると便利な文がいくつかあります。

その中でも、使用頻度が高い4つを取り上げてお伝えします。

【if-else文】ループ処理に条件分岐をつける

ループ処理の途中で、条件によっては出力する要素を変えたり、またはループ処理を終了させることがあります。

条件によって分岐を帰る際に用いる文が「if-else文」です。

例えば、取得した値が偶数の場合は「偶数です」と出力し、取得した値が奇数の場合は「奇数です」と出力したい場合、「if-else文」を用いると次のようになります。


python

# 1から5までの範囲 for i in range(1, 6): # 変数iの要素を2で割ると、余りが0の場合 if(i % 2 == 0): print(str(i) + "は偶数です") # 上記以外 else: print(str(i) + "は奇数です") # 出力結果 # 1は奇数です # 2は偶数です # 3は奇数です # 4は偶数です # 5は奇数です

変数iの値が偶数の場合は「偶数です」と出力し、奇数の場合は「奇数です」と出力しいることがわかると思います。

【break文】ループ処理を終了させる

for文のループ処理を強制終了させることができるbreak文というものがあります。

例えば、1から5の数字を出力するループ処理に、break文を記述すると次のようになります。


python

for i in range(1, 6): print(i) # breakで強制終了 break # 出力結果 # 1

本来、出力結果には1から5の数字が出力されるのですが、break文を用いると、1の値を出力した後、ループ処理が終了します。

さらに、break文はif文と一緒に使うと効果的で、例えば上記のコードで「変数iの値が4の場合、ループ処理を終了させる」という処理をする場合は次のようになります。


for i in range(1, 6):
	if i == 4:
		break
	print(i)

# 出力結果
# 1
# 2
# 3
# 4

if文とbreak文を使うと、for文の幅が格段に広がるので覚えておきましょう。

【continue文】処理をスキップさせる

continueは処理をスキップすることができます。

実際のコードで見た方が早いので、早速見ていきます。


python

for i in range(1, 6): if i == 4: continue print(i) # 出力結果 # 1 # 2 # 3 # 5

continueを用いたことで、変数iの値が4だけスキップされ、その後変数iの5が出力されているのがわかると思います。

僕はcontinue文を実際に使ったことがないですが、for文の説明には必ず記載されているので、一応書いておきました。

様々な関数を用いたfor文

より複雑なfor文を書く際に非常に便利な関数をご紹介します。

全て覚える必要はないですが、必要な時に「こんな関数あったような」と思い出せるように、頭の片隅に置いておきましょう。

【range関数】範囲を指定できる

非常に便利な関数で、範囲を指定することができます。

例えば、4から10の値を出力したい場合、range関数を用いると次のようになります。


python

for i in range(4, 11): print(i) i += 1 # 出力結果 # 4 # 5 # 6 # 7 # 8 # 9 # 10

【enumerate関数】インデックス番号と要素を取得できる

for文は、通常「要素のみ」を取得しますが、enumerate関数はインデックス番号も一緒に取得できます。

enumerate関数を用いると次のようなコードになります。


python

animals = ['dog', 'cat', 'bird', 'tiger', 'lion'] for i, name in enumerate(animals): print(i, name) # 出力結果 # 0 dog # 1 cat # 2 bird # 3 tiger # 4 lion

要素と一緒に、インデックス番号も出力されていることがわかると思います。

【zip関数】複数のリストやタプルから同時に取得する

こちらも非常に便利な関数で、異なるリストから同時に取得することができます。

例えば、「年齢のリスト」と「名前のリスト」を同時に取得したい場合は次のようになります。


python

names = ['miku', 'mari', 'rinon'] ages = ['20', '30', '40'] for name, age in zip(names, ages): print(name, age) # 出力結果 # miku 20 # mari 30 # rinon 40

namesリストとagesリストが同時に出力されていると思います。

【reversed関数】反対の順番に出力する

リバースという意味でわかる通り、要素が逆の順番で出力されます。

実際のコードがこちらです。


python

num = [1, 2, 3, 4, 5] for i in reversed(num): print(i) # 出力結果 # 5 # 4 # 3 # 2 # 1

numリストの要素を、最後から出力していることがわかると思います。

【itertools・product関数】複数のリストやタプルから全ての組み合わせを出力

複数のリストの要素から、全ての組み合わせを出力します。

「mensリスト」と「womensリスト」から、全ての組み合わせで結婚させてみました。


python

mens = ['kan', 'takumi', 'yuta', 'koki'] womens = ['miku', 'mari', 'rinon'] for men, women in itertools.product(mens, womens): print(men + "と" + women + "は結婚しました") # 出力結果 # kanとmikuは結婚しました # kanとmariは結婚しました # kanとrinonは結婚しました # takumiとmikuは結婚しました # takumiとmariは結婚しました # takumiとrinonは結婚しました # yutaとmikuは結婚しました # yutaとmariは結婚しました # yutaとrinonは結婚しました # kokiとmikuは結婚しました # kokiとmariは結婚しました # kokiとrinonは結婚しました

なかなか実用的な関数ですね。

for文まとめ

同じ処理をするにしても、プログラミングでは様々な書き方をすることができます。

ただし、慣れるまではfor文でほとんどの処理ができると言っても過言ではないほど、非常に便利な関数です。

実際に僕も、最初の頃はfor文を使い倒していました。

より綺麗なコードを書いた方がエラーが少なく処理速度も速いのですが、最初のうちは特に気にせずfor文マスターを目指しましょう。

Related