Pythonのfor文の使い方を配列で解説!breakやrangeの使い方もこれでOK

19/01/06 14:14:58     19/05/05 16:42:16

For文の使い方

このページではPythonのfor文の使い方を解説します。

配列をベースに解説を進めていきますが、関連するbreak、continue、index、入れ子、if文等についても網羅的に解説していくので、すぐに実践でも使えるかと思います。

Python関連記事

Pythonのfor文を配列で使う

for文は配列との相性が良いため、配列をベースにfor文の使い方を解説していきます。まずfor文の基本公式は以下のようになります。

for 変数名 in イテラブルオブジェクト:
    処理

多くの言語では変数に数値を入れて継続条件を設定し、インクリメントさせることでループしますが、Pythonの場合オブジェクトを設定すれば長さ分自動でループします。具体例として以下のように配列をループさせます。

array = ['きゃー', 'あー', 'おーいえーい']

for scream in array:
    print(scream)

配列をfor文で出力していく処理ですが、実行すると以下のように配列の中身が出力されます。

きゃー
あー
おーいえーい

breakでfor文を終わりにする

次に、breakによってfor文を終わりにする方法を紹介します。さっそくサンプルコードを見てみましょう。

array = ['きゃー', 'あー', 'おーいえーい']

for scream in array:
    if scream == 'あー':
        print('BREAK')
        break
    print(scream)

このように記述すると、配列の二番目の’あー’が来たらbreakします。

if文の中では配列の出力の前にbreakするようになっているので、BREAKと出力し、配列の中身は出力せずに終了します。結果的には出力は以下のようになります。

きゃー
BREAK

一番目の要素である’きゃー’は出力されていますが、二つ目の’あー’の前にbreakしました。

ちなみに、for文の中のif文は上記のコードのようになるので合わせて把握しておいてください。

in rangeでインデックスを取得する

Pythonのfor文でrange関数を使用すると、配列の中身ではなくインデックス番号が取得されます。

デフォルトではインデックス番号は0から振られるので注意してください。上の説明では配列の要素を1から数えましたが、プログラム的には0からのカウントになります。サンプルコードは以下です。

for i in range(3):
    print(i)

このように記述すると出力結果は以下のようになります。

0
1
2

rangeの引数で指定した分のインデックスがカウントされました。次に、初期値を0以外に設定することも可能です。具体的には以下のようになります。

for i in range(1, 6):
    print(i)

上記のコードを実験すると、以下のようにコンソール出力されます。

1
2
3
4
5

初期値を1に設定したので、1から出力されました。

勘違いされがちなポイントとしては、終了値が5になることでしょう。なぜ5で終わるのかというと、本来初期値を設定しない場合0~5の6つの数値が出力されるからです。

初期値を設定しても終了値が変わるわけではなく、その分カウント数が少なくなるので注意が必要でしょう。また、if文を使って条件に合致する値のみ出力することもできます。具体的には以下のようになります。

for i in range(1, 10):
    if i % 3 == 0:
        print(i)

上記のコードを実行すると以下のようにコンソール出力されます。

3
6
9

if文で3で割り切れるもののみを指定しているので、3の倍数のみが出力されました。

任意の値と要素数で初期化

ループで初期化できるのはPythonだけではありませんが、Pythonの場合特殊な記述方法で配列を初期化することができます。具体的には以下のようになります。

l = [0] * 10
print(l)

print(len(l))

このコードを実行すると、以下のように出力されます。

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
10

出力する値を0に設定し、*で10個分としました。

for文を入れ子にする方法

for文は二重、三重に入れ子にすることが可能です。サンプルコードは以下です。

l1 = [1, 2, 3]
l2 = [10, 20, 30]

for i in l1:
    for j in l2:
        print(i, j)

このコードを実行すると以下のように出力されます。

1 10
1 20
1 30
2 10
2 20
2 30
3 10
3 20
3 30

まず一つ目のループに入ったら、すぐに二つ目のループに入ります。

二つ目のループで設定されている配列には要素が三つ入っているため、その要素の数の分出力されます。三つの要素を出力し終わったら、一つ目のfor文が二周目に入ります。

二周目に入ったら再び二つ目のループが三周し、ループを抜けます。以降この繰り返しで、二重ループは進んでいきます。ループが三重以上ある場合もロジックは同じで、ループに入ったら内側のループが終わるまで回していくイメージです。

continueの使い方

上でbreakの使い方を紹介しましたが、似たような使い方ができるコードにcontinueがあります。

breakの場合for文自体を中断するため次のループに入ることもありませんが、continueの場合そのときのループは中断されるものの、次の周のループには入ります。

注意点としては、continueのイメージからそのままそのループの処理を続けると勘違いしないことです。今現在回っているループは抜けて、あくまでも以降のループは継続するということです。

continueと言っても今現在の周は抜けるので、混乱しないよう注意してください。サンプルコードは以下です。

numList = [3, 4.2, 10, "x", 1, 9]
sum = 0
for num in numList :
    if not isinstance(num, (int, float)) :
        print(num, "数値ではありません。")
        continue
    sum += num
    print(num, "/", sum)

上記のソースコードを実行すると、以下のようにコンソール出力されます。

3 / 3
4.2 / 7.2
10 / 17.2
x 数値ではありません。
1 / 18.2
9 / 27.2

処理内容は、まず数値と文字列が入った配列を用意し、その配列をループにセットして数値かどうかを判定しています。

数値でない場合はif文に入り、配列の中身と ”数値ではありません。” というメッセージを出力してcontinueでループを抜けます。

配列の要素が数値の場合、if文には入らず数値と合計を出力してループを抜けます。

elseの使い方

最後に、for文と対比する形でelseを使う方法を紹介します。

プログラム的にはelseはif文と対応しているのですが、インデントをfor文と対応されることでわかりやすくするロジックです。サンプルコードは以下のようになります。

numList = [3, 4.2, 10, "x", 1, 9] #文字列が含まれているリスト
sum = 0
for num in numList :
    if not isinstance(num, (int, float)) :
        print(num, "数値ではない値が含まれていました。")
        break #ブレイク
    sum += num
else :
    print("合計", sum)

上記のコードを実行すると、以下のようにコンソール出力されます。

x 数値ではない値が含まれていました。

else文はif文に入らなかった際に実行されますが、インデント上はfor文と対比させています。システムのイメージとしては、if文に入らずelse文に入ればエラーではない、といった形です。

以上Pythonのfor文の使い方を説明しました。とりあえずは配列をループで回すイメージがつかめていれば問題ないかと思います。

Pythonのフリーランス案件をチェック

→Pythonの案件情報一覧はこちら

Python関連記事
1,【Pythonのフリーランス求人・案件情報】エンジニア開発単価は?未経験でもいける?
2,Pythonでできることとは?人工知能で強みを発揮!
3,Pythonのインストール方法をまとめてみた
4,Pythonプログラミングに便利なAnacondaとは?機能やPycharmとの違いを解説
5,PythonでAnacondaをインストールする方法から実際の使い方までを解説
6,Pythonの配列を徹底解説!宣言や追加・削除など
7,Pythonのif文の使い方を解説!演算子もおさらい
8,Pythonのfor文の使い方を配列で解説!breakやrangeの使い方もこれでOK(この記事)
9,Pythonのlambda(ラムダ式)の使い方を徹底解説します
10,Pythonの高階関数map/filterの便利な使い方
11,Pythonでclassをどう使う?技術顧問に聞いてみた!

人気記事

編集部おすすめ記事

この記事を読んだ人はこんな記事を読んでいます

案件探しやフリーランスになるための相談する