この記事では、Pythonのfor文について解説していきます。
Pythonのforループの要約
まずは、forループの簡単な要約から。
- Pythonのforループは、反復処理を行うために使う。
- forループのコードは、シーケンス(配列みたいなもの)の各要素に対して実行されます。
-
break
文を使ってforループから抜け出せる。 - また、
continue
文を使用すると、forループの実行をスキップすることができる。 - 他言語と比較してPythonのforは、よりイテレータに近い振る舞いをします。
- タプル、リスト、セット、文字列等の様々なデータ構造をforループで使える。
- forループのネスト処理もできる。
以下は、簡単な例を交えながら解説していきます。
この記事もチェック:Pythonでコロン(:)の意味とは?変数や文字列、配列での使い方を解説する
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
この記事もチェック:Pythonのリストをjoinやmap、forループを使って文字列に変換する方法
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)
この記事もチェック:Pythonの配列をNumpyやforループを使って初期化する3つの方法
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)
この記事もチェック:pythonの配列(リスト)の中で最も多い数を見つける方法を解説(コード付き)
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