Python for文

繰り返し処理を記載するfor文について、説明します。


繰り返し処理を書く時、もっとも典型的な文法はfor文です。

書き方

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

イテラブルオブジェクトとは、リストやタプルといった、順番に値をとりだせるオブジェクトです。


実例

x_list = [1, 3, 5]

for x in x_list:
    print(x)

>> 1
>> 3
>> 5

range関数

for文でn回繰り返す処理を書きたい場合は、range関数を使います。for文にrange(n)を使うと、0から始まるn個の要素を持ったリストと同等の動作をします。

for _ in range(3):
    print('Hello World!!')

>> Hello World!!
>> Hello World!!
>> Hello World!!
  • range関数の使い方

ちなみに、変数名を _ (アンダーバー)にすることで、for文のなかでrange関数で生成したリストの要素(変数)を使っていないことを明示的に示しています。


ネスト (入れ子構造)

for文ではネスト(入れ子構造)を記載することができます。処理の部分にさらにfor文を記載します。

for x in range(2):
    print('外側ループ', x)
    for y in  range(3):
        print('内側ループ', y)

>> 外側ループ 0 
>> 内側ループ 0
>> 内側ループ 1
>> 内側ループ 2
>> 外側ループ 1
>> 内側ループ 0
>> 内側ループ 1
>> 内側ループ 2

辞書のfor文

辞書のfor文の場合、変数にvalueの値を使いたい場合はvalues()、keyとvalue両方の値を使いたい場合はitems()を使います。

x_dict = {'age':20, 'height':155, 'weight': 50}

for v in x_dict.values(): # valueの値だけ
    print(v)

>> 20
>> 155
>> 50


for k, v in x_dict.items(): # keyとvalueの値
    print(k, v)

>> age 20 
>> height 155 
>> weight 50

注意点

for文のネストを何重にも書くことはあまり好まれません。なぜかというと、for文は処理速度が遅いので、単純にforを重ねることでさらに遅くなるという機能的な問題と、可読性が下がるという問題があります。

一般的には、3重以上のネストになる場合、関数切り出しを考えたほうが良いでしょう。


関連記事