Pythonのforループの解説|文字列、タプル、配列、辞書、集合をfor文で処理する方法

スポンサーリンク

この記事では、Pythonのfor文について解説していきます。

スポンサーリンク

Pythonのforループの要約

まずは、forループの簡単な要約から。

  • Pythonのforループは、反復処理を行うために使う。
  • forループのコードは、シーケンス(配列みたいなもの)の各要素に対して実行されます。
  • break文を使ってforループから抜け出せる。
  • また、continue文を使用すると、forループの実行をスキップすることができる。
  • 他言語と比較してPythonのforは、よりイテレータに近い振る舞いをします。
  • タプル、リスト、セット、文字列等の様々なデータ構造をforループで使える。
  • forループのネスト処理もできる。

以下は、簡単な例を交えながら解説していきます。

Pythonのforループの構文について

Pythonのforループは非常にシンプルで、in演算子を使って、シーケンス内の要素を繰り返し処理します。

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

range(5)関数は、0から4までの5つの数のリストを生成してくれる関数で、forループと併用することが多いです。

結果は、以下の通りです。

0
1
2
3
4

色々なデータ構造をforループで処理してみる

それでは、さまざまな種類のデータ構造を使ったforループの例を見てみましょう。

1. 文字列をforループで処理する

Pythonでは、文字列をforループで処理ができます。

forループで処理をすることで、文字列の文字を1文字ずつ処理する事が出来ます

以下は、文字列のインデックスと文字を表示する簡単なプログラムです。

message = "Hello"
count = 0

for character in message:
    print(f'Character: {character}')

結果は以下の通りです。

Character: H
Character: e
Character: l
Character: l
Character: o

2. タプルをforループで処理する

例えば、文字列のタプルがあるとします。

すべての要素を小文字に変換したい場合は、以下の様にforループでタプルの要素を反復処理すればよいです。

def to_lower_case(my_tuple):
          temp_list = []
          for item in my_tuple:
            temp_list.append(str(item).lower())

          return tuple(temp_list)

fruits = ("Apple","Orange" ,"BANANA")
fruits_new = to_lower_case(fruits)

print(fruits_new)

結果は以下の通りです。

('apple', 'orange', 'banana')

3. リストをforループで処理する

Pythonのforループと言えば、リスト(list)を処理するために使う事が多いです・

以下の例は、整数のリストをforループで回して、偶数か奇数かを表示するコードです。

list_ints = [ 1 , 2 , 3 , 4 , 5 ]
for i in list_ints:
    if i % 2 == 0:
        print(f'{i} is even.')
    else:
        print(f'{i} is odd.')

4. セット(集合)をforループで処理する

Pythonでは、セット(集合)をforループで処理することもできます

集合を初期化する場合には、組み込み関数のset()を使えばOKです。

以下は、forループを使って、集合の要素を表示する簡単な例を示します。

set_cities = set()
set_cities.add("New York")
set_cities.add("New Delhi")
set_cities.add("Bangalore")
set_cities.add("London")

for city in set_cities:
    print(city)

5. Dictionary(辞書)をforループで処理する

Pythonの辞書はシーケンス(配列みたいなもの)ではないので、辞書を直接forループで処理することはできません

しかし、その要素の集合のようなシーケンスを返すメソッド items() を持っています。

このメソッドを使って、辞書の要素に対して繰り返し処理を行うことができます。

my_dict = {"1": "Apple", "2": "Kiwi", "3": "Orange"}

for k, v in my_dict.items():
    print(f'Key={k}, Value={v}')

break文を使ってforループを終了させる

Pythonでは、break文を使うと、すべての要素を反復処理せずにforループを終了させることができます

例えば、以下の例の様に処理するメッセージのリストがあるとします。

もしExit文字列に該当すれば、処理を停止するようにします。

messages = ["Hi" ,"Hello" ,"Exit" ,"Adios" ,"Hola" ]

for msg in messages:
    if msg == "Exit":
        break
    print(f'Processing {msg}')

結果は以下の通りです。

“Exit”の所でforループの処理が止まっているのが分かりますね。

Hi
Hello

continue文を使ってforループをスキップする

Sometimes we want to skip processing of some elements in the sequence. We can use continue statement for this.

ints = (1 , 2 , 3 , 4 , 5 , 6)

for i in ints:
    if i % 2 == 0:
        continue
    print(f'Processing {i}')

上記の例では、2で割り切れる数は表示されないようになっています。

Python の range() 関数によるループ処理

これまでの例にも登場したrangeについて、改めて解説していきます。

Python の range() 関数は配列を生成する関数です。

これをforループで使用すると、特定の回数だけループを実行することができます

ここでは、forループでrange()関数を使用して、コードを5回実行する方法を見てみましょう。

for i in range(5):
    print("Processing for loop:", i)

for文にelseを付ける処理

Pythonでは、forループ自体にelse文を付けることができます。

forループでelse文を使用すると、forループが終了したときに何らかのコードを実行することができます

この機能は、シーケンスの処理が正常に終了したときに、ログを取ったり、通知を送ったりするのに便利です。

databases = ("MySQL","Oracle" ,"PostgreSQL" ,"SQL Server")

for db in databases:
    print(f'Processing scripts for {db}')
else:
    print("All the databases scripts executed successfully.")

上記の例では、forループの最後にAll the databases scripts executed successfully.の文字列が返ってくるはずです。

また、break文を使ってforループを終了させると、elseブロックは実行されません

2重(ネスト)forループの処理

ループが他のループの中に存在する場合、ネストループと呼ばれます。


Pythonのforループは入れ子にすることができます

list_tuples = [("Apple","Banana"), ("Orange","Kiwi" ,"Strawberry")]

for t_fruits in list_tuples:
    for fruit in t_fruits:
        print(fruit)

結果は以下の通りです

Apple
Banana
Orange
Kiwi
Strawberry

forループとreversed()関数を使って逆順に処理する

forループで逆順で要素を反復処理したい時があります。

このような場合には、forループと一緒にreversed()関数を使用します

numbers = (1 , 2 , 3 , 4 , 5)

for n in reversed(numbers):
    print(n)

結果は以下の通りです。

5
4
3
2
1

forループ内でグローバル変数にアクセスする

通常、forループ内で定義した変数は、for文の外からアクセスができません。

for文の実行が終了すると同時に、for文の中で定義した変数は破棄されます。

しかし、forループの内部でグローバル変数にアクセスし、その値を変更することも可能です。

以下の例を見ていきましょう。

global_var = "global"
for c in range(1 , 3):
    x = 10
    global_var = "for variable"

print(global_var)

結果は以下の通り。

forループ内でグローバル変数の値が変更されたことが分かりますね。

for variable
タイトルとURLをコピーしました