for文

for文の基本

Pythonのfor文は以下のように記述します。

for文
for ループ内変数 in イテラブルオブジェクト:
    ループ内処理

イテラブルオブジェクトというのは、シーケンス型や辞書型のような反復処理が可能なオブジェクトのことです。

変数の型で既にループに関する話題に触れましたが、それらに加え、for-else文、break句について説明します。

[参考] range型

まずは基本のfor文を学習しましょう。

listのfor文

listの要素の先頭から順番に処理をする場合です。

datas = ['a', 'b', 'c']

for v in datas:
    print(v) # listの各値が表示される

rangeのfor文

C言語やJavaのループカウンタを利用したループのように、初期値、限界、増分を指定します。

for v in range(1, 5, 2):
    print(v) # 1から2飛ばしで5未満まで出力されます。この場合、3、5が出力されます。

dictionaryのfor文

keyのループ

辞書型の場合、keyでループすることができます。

dic = {'key1': 110, 'key2': 270, 'key3': 350}

for key in dic:
    print(key, dic[key])

valueのループ

値でループしたい場合はvaluesメソッドを利用します。

dic = {'key1': 110, 'key2': 270, 'key3': 350}
for value in dic.values():
    print(value) # 値が出力される

keyとvalueのループ

key、valueの両方をループで取得したい場合は、items()メソッドを利用します。

dic = {'key1': 110, 'key2': 270, 'key3': 350}
for key, value in dic.items():
    print(key, value) # keyと値が出力される

ループインデックスを取得する場合

何番目の要素だけは処理をしない、等の処理を入れたい場合はループインデックスを利用します。
組込みのenumerate関数を利用することで取得することができます。

リストの場合

l = ['a', 'b', 'c']
 
for i, value in enumerate(l):
    print(i, value) # ループインデックスとリストの値が出力
 
for i, (key, value) in enumerate(dic.items()):
    print(i, key, value) # ループインデックスとkeyと値が出力

辞書の場合

dic = {'key1': 110, 'key2': 270, 'key3': 350}
 
for i, value in enumerate(dic):
    print(i, value) # ループインデックスと値が出力
 
for i, (key, value) in enumerate(dic.items()):
    print(i, key, value) # ループインデックスとkeyと値が出力

for-else

Pythonのfor文はelseと併用することができます。

elseブロックに記述した処理は、forループ処理回数によらず、必ず実行されます。

サンプルで動作を確認してみましょう。

data_list = [] # 空のリスト

for data in data_list:
    print(data)
else:
    print('ループ処理が終わりました') # ここが出力される。

ループで回すリストが空なので、forブロック内の処理は行われませんが、elseブロック内の処理は呼びだされます。

break

ループを途中で中断する場合、breakを使用します。

breakが呼び出された場合、elseブロックの中は実行されません。

サンプルで確認してみましょう。

data_list = [1, 2, 3] # 空のリスト

for data in data_list:
    print(data)
    if data > 1:
        break
else:
    print('ループ処理が終わりました')

2まで出力された後、breakが実行され処理が終了します。
elseのprint文は出力されません。