8.1 forループ
条件に基づいてコマンドのグループを実行できるって素晴らしいよね。じゃあ、100回何かをやりたい時はどうする?
Pythonにはループがあるんだ。そして、そんな時にぴったりなのがforループってやつなんだ。forループの一般的な形はこうだよ:
for 変数 in リスト_値:
コマンド1
コマンド2
コマンドN
ここでリスト_値っていうのは値のセット:例えばリストとか文字列とか、辞書なんかもね(それは後で)。
変数は、リスト_値から順番に値を受け取って、それぞれの値に対してブロックのコマンドを実行するんだ。
例を見てみよう:
例 | 説明 |
---|---|
|
1. 変数fruitに"apple"が代入されて、 コマンドprint(fruit )が実行される。2. 変数fruitに"banana"が代入されて、 コマンドprint(fruit )が実行される。3. 変数fruitに"cherry"が代入されて、 コマンドprint(fruit )が実行される。 |
これがループの動き方だよ:
in
の後のリストに10個の値があれば、コマンドのブロックは10回実行されるってこと。
各リスト_値の値に対して二つのことが起きるんだ:
-
ループの変数(
for
の後に指定されているもの)にリスト_値の次の値が代入される。 - そしてコマンドのブロックが実行されるんだ。
もうひとつの例:
例 | 説明 |
---|---|
|
ループは数字を画面に表示するよ:
1 2 3 4 5 6 7 8 9 10 |
8.2 範囲の指定 — range
最後の例で見たように、画面に10の数字を表示するのはとっても簡単だよ。でも、100回ループをやりたい時は?それとも1000回?
もちろん、それに対する解決策はあるんだ。Pythonには関数range()
があって、数のシーケンスを生成するための
特別な関数なんだ。そしてそれとforループを組み合わせると、繰り返しのタスクを管理するための強力なツールになるんだ。
関数range()
は、与えられた引数の数に応じていくつかの方法で使うことができるんだ。
range()の基本的な使い方:
1つの引数: range(n)
は0からn-1までのシーケンスを生成するよ。決まった回数だけアクションを実行したい時に便利だよね。
for i in range(5):
print(i) # 0から4の数字を表示
2つの引数: range(start, stop)
はstart
からstop-1
までのシーケンスを生成するよ。
特定の数字からイテレーションを始めたい時に便利だね。
for i in range(1, 6):
print(i) # 1から5の数字を表示
3つの引数: range(start, stop, step)
は、step
という第3の引数を追加するよ。これがシーケンスの数字の間のステップを決めるんだ。
for i in range(0, 10, 2):
print(i) # 0から8までの偶数を表示
逆行ループ: range()
は逆順で数字を生成することも可能で、逆にイテレーションを実行するのに役立つんだ。
for i in range(10, 0, -1):
print(i) # 10から1までの数字を表示
range()
関数とfor
ループを組み合わせると、Pythonでイテレーションを制御する柔軟なツールになるんだ。
その機能を理解すると、プログラムの不可欠な部分としてより効率的で分かりやすいループを作成する助けになるんだ。
8.3 リストによるループ
もし異なる値に対して一連のアクションを実行したいなら、range()
関数は適してないんだ。
でも、そんな時は、その値を角括弧を使ってリストにまとめることができるんだ。一般的な形はこんな感じだよ:
for 変数 in [val1, val2, …, valN]:
コマンド1
コマンド2
コマンドN
単にカンマで値を区切るだけで、そのそれぞれに対してループが実行されるんだ。変数は順番に各値を受け取るんだよ。例を見てみよう:
例 | 説明 |
---|---|
|
ループは次の文字列を画面に表示するよ:
apple banana cherry |
in
の後に直接、リスト内の数字を指定することもできるんだよ:
例 | 説明 |
---|---|
|
ループは次の数字を画面に表示するよ:
0.99 2.75 0.25 |
リストの中にはどんなタイプのオブジェクトでも列挙できるよ:
例 | 説明 |
---|---|
|
ループは次の文字列を画面に表示するよ:
0.99 apple -1 True |
GO TO FULL VERSION