Pythonのfor文は、リスト、タプル、辞書、集合、文字列、ファイルなどのイテラブルオブジェクトに対してループ処理を行うための制御文です。for文は、各ループごとにイテラブルオブジェクトの要素を取得し、処理を行います。
基本的な構文
基本的な構文は以下の通りです。
for 変数 in イテラブルオブジェクト:
処理
例えば、リストの要素を1つずつ取得して表示する場合は、以下のように書きます。
fruits = ['apple', 'banana', 'orange']
for fruit in fruits:
print(fruit)
このコードでは、fruitsリストの要素を1つずつfruit変数に代入し、print関数で表示しています。実行結果は以下の通りです。
apple
banana
orange
また、range関数を使って指定した回数だけループ処理を行うこともできます。
for i in range(3):
print(i)
このコードでは、0から2までの数値を1つずつi変数に代入し、print関数で表示しています。実行結果は以下の通りです。
0
1
2
for文には、break文やcontinue文を使ってループ処理を制御することもできます。break文は、ループ処理を中断し、次の処理に移るために使われます。continue文は、ループ処理をスキップして、次のループに移るために使われます。
fruits = ['apple', 'banana', 'orange', 'grape']
for fruit in fruits:
if fruit == 'banana':
continue
print(fruit)
if fruit == 'orange':
break
このコードでは、fruitsリストの要素を1つずつfruit変数に代入し、fruitが’banana’の場合はスキップして、’orange’の場合はループ処理を中断します。実行結果は以下の通りです。
apple
orange
以上が、Pythonのfor制御文の基本的な使い方です。for文は非常に便利な制御文であり、イテラブルオブジェクトを扱う際によく使われます。
便利な使い方
range関数の使い方
range関数は、指定した回数だけループ処理を行うために使われます。基本的な構文は以下の通りです。
range(start, stop, step)
- start:数列の開始値を指定します。デフォルトは0です。
- stop:数列の終了値を指定します。この値は含まれません。
- step:数列の増分を指定します。デフォルトは1です。
例えば、1から10までの数値を1つずつ取得する場合は、以下のように書きます。
for i in range(1, 11):
print(i)
このコードでは、1から10までの数値を1つずつi変数に代入し、print関数で表示しています。実行結果は以下の通りです。
1
2
3
4
5
6
7
8
9
10
また、range関数にstep引数を指定することで、増分を変更することができます。
for i in range(0, 11, 2):
print(i)
このコードでは、0から10までの数値を2つずつi変数に代入し、print関数で表示しています。実行結果は以下の通りです。
0
2
4
6
8
10
enumerate関数の使い方
enumerate関数は、イテラブルオブジェクトの要素を取得しつつ、要素のインデックスも取得するために使われます。基本的な構文は以下の通りです。
enumerate(イテラブルオブジェクト, start)
- イテラブルオブジェクト:要素を取得する対象のイテラブルオブジェクトを指定します。
- start:インデックスの開始値を指定します。デフォルトは0です。
例えば、リストの要素をインデックスとともに表示する場合は、以下のように書きます。
fruits = ['apple', 'banana', 'orange']
for i, fruit in enumerate(fruits):
print(i, fruit)
このコードでは、fruitsリストの要素を1つずつfruit変数に代入し、同時にenumerate関数でインデックスをi変数に代入しています。print関数でiとfruitを表示しています。実行結果は以下の通りです。
0 apple
1 banana
2 orange
for-else文の使い方
for-else文は、for文のループ処理が正常に終了した場合に実行されるコードブロックを定義する方法です。for文がbreakによって中断された場合は、elseブロックは実行されません。基本的な構文は以下の通りです。
for 変数 in シーケンス:
実行するコード
else:
実行するコード
例えば、リストに指定した文字列が含まれているかどうかを判定する場合は、以下のように書きます。
fruits = ['apple', 'banana', 'orange']
search_word = 'banana'
for fruit in fruits:
if fruit == search_word:
print(search_word, 'が見つかりました')
break
else:
print(search_word, 'が見つかりませんでした')
このコードでは、fruitsリストの要素を1つずつfruit変数に代入し、search_wordと一致する要素が見つかった場合に、メッセージを表示してループを中断します。一致する要素が見つからなかった場合は、elseブロックでメッセージを表示します。実行結果は以下の通りです。
banana が見つかりました
search_wordに’grape’を指定すると、実行結果は下記になります。
grape がみつかりませんでした
zip関数の使い方
zip関数は、複数のシーケンスから要素を取り出して、タプルとして返すために使われます。返されるタプルの要素数は、引数で指定したシーケンスの中で最も短いものの要素数となります。基本的な構文は以下の通りです。
zip(シーケンス1, シーケンス2, ...)
例えば、2つのリストの要素をペアとして表示する場合は、以下のように書きます。
fruits = ['apple', 'banana', 'orange']
prices = [100, 200, 150]
for fruit, price in zip(fruits, prices):
print(fruit, price)
このコードでは、fruitsリストとpricesリストから、1つずつ要素を取り出し、fruitとpriceに代入しています。print関数でfruitとpriceを表示しています。実行結果は以下の通りです。
apple 100
banana 200
orange 150
dict型のitems()の使い方
Pythonの辞書(dict)型は、キーと値をペアで格納するデータ型です。dict型のitems()メソッドは、辞書型の各要素をキーと値のタプルとして取得できるため、for文で利用することができます。以下では、dict型のitems()メソッドの利用方法について説明します。
items()メソッドは、辞書型の各要素をキーと値のタプルにした要素を、イテレーターとして返します。このイテレーターをfor文で利用することで、辞書型の各要素を処理することができます。基本的な構文は以下の通りです。
for キー, 値 in 辞書型.items():
# 処理
例えば、以下のような辞書型があるとします。
fruits = {'apple': 100, 'banana': 200, 'orange': 150}
この辞書型のitems()メソッドをfor文で利用して、各要素を表示するコードは以下のようになります。
for fruit, price in fruits.items():
print(fruit, price)
このコードでは、fruits.items()メソッドでキーと値のタプルにした要素を、fruitとpriceに代入しています。print関数でfruitとpriceを表示しています。実行結果は以下の通りです。
apple 100
banana 200
orange 150
リスト内包表記について
長くなったので、こちらの記事をご覧ください。
コメント