【基本】Pythonのwhileループ文、forループ文について解説!

2022-07-27

Pocket

こんにちは、爽です。皆さん、いかがお過ごしでしょうか?

今回はPythonのループと一緒に使われる制御構文、及び関数について確認します。
ループは繰り返しの処理を行うためのものですが、if文と同じようにどのようなロジックを組む場合でもほぼ必須の構文となりますので、是非マスターしましょう!

■この記事の対象読者
・Pythonに興味がある方
・Pythonを学び始めてみたい方

・Pythonのループの詳細について知りたい方

なお、私はPythonをAnacondaをインストールしてJupyterで実行しています。MacのAnacondaのインストール方法とJupyterの使い方は下記記事にまとめているので良かったらご参考ください。

それではどうぞ!

Pythonのループの書き方

Pythonではループを「while」を用いた書き方と「for」を用いた書き方の2種類の方法で表現できます。
まずは「while」を用いたループの書き方です。

while文

Pythonでの具体的な書き方は、while 条件式 :と書き、次の行にインデント(tabキー)を加えて、条件に合致する場合に実行したい処理を書きます。

count = 0

#countが5以下の場合に繰り返し処理を実行
while count <= 5:
    print(count)
    count += 1 #この処理を書き忘れると無限ループとなる
#>0
#>1
#>2
#>3
#>4
#>5

最後のcount変数を処理毎に1ずつ足していく処理を忘れると無限ループになるので気をつけてください。
これくらい単純な処理ですとすぐ気付くのですが、複雑で時間のかかる処理の時にこれをやってしまうと、気付くのが遅れ、開発時間のロスとなってしまいます。

while else文

while else文は繰り返し処理を実行し終えた後に実行したい処理がある場合に用います。
Pythonでの具体的な書き方は、前段のwhile文につながる形でelse :と書き、次の行にインデント(tabキー)を加えて、繰り返し処理を実行し終えた後に実行したい処理を書きます。

count = 0

#countが5以下の場合に繰り返し処理を実行
while count <= 5:
    print(count)
    count += 1 #この処理を書き忘れると無限ループとなる
else:
    print('end')

#>0
#>1
#>2
#>3
#>4
#>5
#>end

なお、「while else文」はbreak文で繰り返し処理を抜けた場合は実行されないので注意してください。

for文

続いて「for文」です。
Pythonでの具体的な書き方は、for イテレータ in 変数:と書き、次の行にインデント(tabキー)を加えて、繰り返したい処理を書きます。
イテレータは任意の文字でOKで、Pythonでは慣例的に「アルファベットのi」と置くことが多いようです。ちなみにJavaでも同様に「アルファベットのi」と置くことが多いと思います。

list = [0,1,2,3,4,5]

#listの中に入っている要素をイテレータに入れ、要素の数分の繰り返し処理を実行
for i in list:
    print(i)
#>0
#>1
#>2
#>3
#>4
#>5

なお、変数の中は数字だけでなく文字列も入れて処理できます。

fruits = ['banana','apple','lemon']

#listの中に入っている要素をイテレータに入れ、要素の数分の繰り返し処理を実行
for fruit in fruits:
    print(fruit)
#>banana
#>apple
#>lemon

for else文

for else文はwhile else文と同様に繰り返し処理を実行し終えた後に実行したい処理がある場合に用います。
Pythonでの具体的な書き方は、前段のfor文につながる形でelse :と書き、次の行にインデント(tabキー)を加えて、繰り返し処理を実行し終えた後に実行したい処理を書きます。
また、for else文もbreak文で繰り返し処理を抜けた場合は実行されないので注意してください。

fruits = ['banana','apple','lemon']

#listの中に入っている要素をイテレータに入れ、要素の数分の繰り返し処理を実行
for fruit in fruits:
    print(fruit)
else:
    print('I’m full!')
#>banana
#>apple
#>lemon
#>I’m full!

continueとbreak

continueとbreakは繰り返し処理の中で処理を制御したい場合に使用します。なお、while文、及びfor文どちらでも使用可能です。

continue

continueは繰り返し処理の中で、ある条件の場合は処理をスキップしたい場合に使います。

list = [0,1,2,3,4,5]

for i in list:
    #偶数の場合処理をスキップ
    if i % 2 == 0:
        continue
    print(i)
#>1
#>3
#>5

break

breakはcontinueは繰り返し処理の中で、ある条件の場合は処理を終了したい場合に使います。

list = [0,1,2,3,4,5]

for i in list:
    #奇数の場合処理を抜ける
    if i % 2 == 1:
        break
    print(i)

#for文の外の処理が実行される
print('break')
#>0
#>break

range関数

range関数はfor文と用いられることが多く、for文で用いられるとrangeの中の数字の文だけ繰り返し処理を実行できるようになります。

for i in range(10):
    print(i)
#>0
#>1
#>2
#>3
#>4
#>5
#>6
#>7
#>8
#>9

enumerate関数

enumerate関数もfor文と用いられることが多く、for文で用いられると繰り返し処理対象の変数の中の要素をインデックス付きで返してくれるようになります。

fruits = ['banana','apple','lemon']
#インデックスを入れたいイテレータを1番目、繰り返し処理対象の変数の中の要素を入れたいイテレータを2番目に書く
for i,fruit in enumerate(fruits):
    print(i,fruit)
#>0 banana
#>1 apple
#>2 lemon

イテレータのiとfruitを逆にすると下記の結果になります。問題ありませんが、直感的に分かりづらいのでこのような書き方はやめた方がいいでしょう。

fruits = ['banana','apple','lemon']
for fruit, i in enumerate(fruits):
    print(fruit, i)
#>0 banana
#>1 apple
#>2 lemon

zip関数

zip関数は複数の繰り返し処理対象の変数をイテレータに格納できる関数です。

days = ['Friday', 'Saturday', 'Sunday']
meals = ['beef', 'pork', 'chicken']
fruits = ['banana', 'apple', 'lemon']

#zip関数の中の変数の並びのと同じ並びでイテレータに要素が格納される
for day, meal, fruit in zip(days, meals, fruits):
    print('Day:', day)
    print('Meal:', meal)
    print('Fruit:' ,fruit)
    print('###############Next Day###############')
#>Day: Friday
#>Meal: beef
#>Fruit: banana
#>###############Next Day###############
#>Day: Saturday
#>Meal: pork
#>Fruit: apple
#>###############Next Day###############
#>Day: Sunday
#>Meal: chicken
#>Fruit: lemon
#>###############Next Day###############

for文で辞書型を操作

for文で辞書型を操作するためにはitems関数を用います。
items関数を使用することで最初のイテレータにキー、次のイテレータにバリューを格納できます。

man = {
    'From':'Tokyo',
    'Age':'31',
    'Like':'Uklele'
}

#items関数でkにキー、vにバリューを格納する
for k, v in man.items():
    print(k, ':', v)
#>From : Tokyo
#>Age : 31
#>Like : Uklele

参考資料

この記事はUdemyのPython+FlaskでのWebアプリケーション開発講座!!~0からFlaskをマスターしてSNSを作成する~という講座と現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイルという2つの講座を参考にさせていただき、作成しました。

Python+FlaskでのWebアプリケーション開発講座!!~0からFlaskをマスターしてSNSを作成する~

Udemyより抜粋

当講座は最低限のWeb開発の知識を知っていることが前提とはなりますが、とにかくPythonの説明とFlask開発の為の説明が充実しているのでおすすめです。
28時間に及ぶ長丁場の講座にはなりますが、絶対に聞く価値がある講座です。
これをマスターすればPythonでどんなアプリケーションでも作ることができると思います。

当講座のおすすめポイントを以下にまとめておきます。

当講座のおすすめポイント

とにかく説明が充実している

Webアプリ開発におけるフレームワークがなぜ有益なのか知ることができる

セキュリティ対策、Ajaxなどの技術も知れる

現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル

画像に alt 属性が指定されていません。ファイル名: a1ee3d048d6aa860662b6f58c4aa167f-1024x328.png

当講座はPythonの基礎から応用まで幅広く学べる講座なのでおすすめです。
この講座の講師はとにかくPythonについての知識が豊富ですし、話も適度な速さで聞き取りやすいです。さすがのシリコンバレーです。
また、最後の方に機械学習で使うライブラリについても解説があるので、データサイエンス・AIについても多少知ることができます。

当講座のおすすめポイントを以下にまとめておきます。

当講座のおすすめポイント

シリコンバレーで働いているということもあり、講師のPythonの知識が豊富

話も適度な速さで聞き取りやすい

コードの意味だけでなく、それをどう応用するかまで解説してくれる

なお、Udemyについては以下の記事でまとめていますのでご参考ください。

まとめ

ということで、今回はPythonのループと一緒に使われる制御構文、及び関数について解説しました。
ループもif文と同様にどのようなロジックを組む場合にもほぼ必須の構文となりますのでぜひ押さえていただければと思います。
では、今回はここまでとさせていただきます。