Pythonでfor文のループ処理を行う方法

2019年11月12日

みなさまおはこんばんにちは、せなです

今回はPythonのforループの処理について解説していきたいと思います

一般的なforのループ処理

以下のようにしてリストから値を取得するのが一般的なfor文の使い方かと思います

fruit_list = ['grape', 'apple', 'orange']
for fruit in fruit_list:
    print(fruit)
----結果----
grape
apple
orange

forのループを途中で終了:break

以下のように「break」をforの処理途中に記述すると「break」が行われた時点でforのループから抜けます

fruit_list = ['grape', 'apple', 'orange']
for fruit in fruit_list:
    if fruit == 'apple':
       print('BREAK')
       break
    print(fruit)
----結果----
grape
BREAK

以下のようにforの外に記述している処理は実行されます

fruit_list = ['grape', 'apple', 'orange']
for fruit in fruit_list:
    if fruit == 'apple':
        print('BREAK')
        break
    print(fruit)
print('banana')
----結果----
grape
BREAK
banana

forの特定処理をスキップ:continue

以下のように「continue」をforの処理途中に記述すると「continue」が行われた時点でforのループの次に進みます

fruit_list = ['grape', 'apple', 'orange']
for fruit in fruit_list:
    if fruit == 'apple':
        print('SKIP')
        continue
    print(fruit)
----結果----
grape
SKIP
orange

forのループ処理後の処理:else

以下のようにループの終了後に「else」を記述すると必ずその処理を行うことができます

fruit_list = ['grape', 'apple', 'orange']
for fruit in fruit_list:
    print(fruit)
else:
    print(banana)
----結果----
grape
apple
orange
banana

以下のように「break」でループを抜けた場合には「else」の処理は実行されません

fruit_list = ['grape', 'apple', 'orange']
for fruit in fruit_list:
    if fruit == 'apple':
        print('BREAK')
        break
    print(fruit)
else:
    print(banana)
----結果----
grape
BREAK

リストの逆順でforループ処理:reversed()関数

reversed()」関数を使用するとリストの逆順から処理を行うことができます

fruit_list = ['grape', 'apple', 'orange']
for fruit in reversed(fruit_list):
    print(fruit)
----結果----
orange
apple
grape

リンク:Pythonドキュメント:reversed()

forループ中のindex(カウンタ)処理

一般的なindex処理

forの処理中にindexをカウントしながら処理をしたいときには以下のように記述します

fruit_list = ['grape', 'apple', 'orange']
index = 0
for fruit in fruit_list:
    print('インデックス:' + str(index) + ' 値:' + fruit)
    index += 1
----結果----
インデックス:0 値:grape
インデックス:1 値:apple
インデックス:2 値:orange

簡潔なindex処理:range()関数

以下のように「range()」関数を使用することでindexの記述を簡潔にすることができます

fruit_list = ['grape', 'apple', 'orange']
for index in range(len(fruit_list)):
    print('インデックス:' + str(index) + ' 値:' + fruit_list[index])
----結果----
インデックス:0 値:grape
インデックス:1 値:apple
インデックス:2 値:orange

リンク:Pythonドキュメント:range()

要素とindexの同時処理:enumerate()関数

以下のように「enumerate()」関数を使用することでindexと要素の両方を同時に取得することもできます

fruit_list = ['grape', 'apple', 'orange']
for index, fruit in enumerate(fruit_list):
    print('インデックス:' + str(index) + ' 値:' + fruit)
----結果----
インデックス:0 値:grape
インデックス:1 値:apple
インデックス:2 値:orange

リンク:Pythonドキュメント:enumerate()

複数のリストの同時処理:zip()関数

zip()」関数を使用することで複数のリストを同時にループさせることができます

fruit_list = ['grape', 'apple', 'orange']
vegetable_list = ['cabbage', 'carrots', 'tomato']
meat_list = ['beef', 'pork', 'chicken']
for fruit, vegetable, meat in zip(fruit_list, vegetable_list, meat_list):
    print('果物:' + fruit + ' 野菜:' + vegetable + ' お肉:' + meat)
----結果----
果物:grape 野菜:cabbage お肉:beef
果物:apple 野菜:carrots お肉:pork
果物:orange 野菜:tomato お肉:chicken

zip()」関数だと要素数の異なるリスト同士の際に最も要素数の少ない要素までしか処理が行われません

fruit_list = ['grape', 'apple']    #要素が2つしかない
vegetable_list = ['cabbage', 'carrots', 'tomato']
meat_list = ['beef', 'pork', 'chicken']
for fruit, vegetable, meat in zip(fruit_list, vegetable_list, meat_list):
    print('果物:' + fruit + ' 野菜:' + vegetable + ' お肉:' + meat)
----結果----
果物:grape 野菜:cabbage お肉:beef
果物:apple 野菜:carrots お肉:pork

要素数を考慮せずに処理を行いたい場合は「itertools.zip_longest()」関数を使用してください

import itertools
fruit_list = ['grape', 'apple']    #要素が2つしかない
vegetable_list = ['cabbage', 'carrots', 'tomato']
meat_list = ['beef', 'pork', 'chicken']
for fruit, vegetable, meat in itertools.zip_longest(fruit_list, vegetable_list, meat_list):
    print('果物:' + str(fruit) + ' 野菜:' + vegetable + ' お肉:' + meat)
----結果----
果物:grape 野菜:cabbage お肉:beef
果物:apple 野菜:carrots お肉:pork
果物:None 野菜:tomato お肉:chicken

上のように要素のないものには変わりにNoneが使用されるようになります

リンク:Pythonドキュメント:zip()
リンク:Pythonドキュメント:itertools.zip_longest()

dict型のforループ処理

dict型のオブジェクトをforループで処理するときにキーを取得するときには「keys()」関数を使用します

dict = {'Key1': 1, 'Key2': 2, 'Key3': 3}
for k in dict.keys():
    print(k)
----結果----
Key1
Key2
Key3

値を取得する時には「values()」関数を使用します

dict = {'Key1': 1, 'Key2': 2, 'Key3': 3}
for v in dict.values():
    print(v)
----結果----
1
2
3

キーと値の両方を取得するときには「items()」関数を使用します

dict = {'Key1': 1, 'Key2': 2, 'Key3': 3}
for k, v in dict.items():
    print(k, v)
----結果----
Key1 1
Key2 2
Key3 3

リンク:Pythonドキュメント:dict