Pythonで繰り返し処理をするための文
Pythonで繰り返し処理するには、2つの文が存在します。
1つは今回紹介するfor文で、もう1つはwhile文です。
簡単に違いをいうと、ある特定の回数の繰り返し処理する時はfor文を、何回繰り返すか分からない時や永遠に繰り返す時はwhile文を使います。
個人的にはほとんどの場合、回数が分かっている繰り返し処理をするので、for文を多用しています。
そのうちwhile文もうまく使えるようになって紹介できればいいなと思っています。
とりあえず使ってみる
for文を使う場合は、リストのような要素がいくつか入ったものが必要です。
とりあえず1から5までの数字を入れたリストを使って、繰り返し出力してみます。
for i in [1, 2, 3, 4, 5]:
print(i)
出力結果
1
2
3
4
5
forはinとセットで使われます。
上の例の i は変数名で、inの後ろのリストの前から順に1つずつ i に入れて、print(i)で出力しています。
ここで注意点です。
for i in [1, 2, 3, 4, 5]の後ろにコロン(:)があることと、print(i)がタブ1つ分ずれていることが重要になります。
コロンによりここから繰り返しが始まりますよという合図で、タブ1つ分下がっているところ(インデントといいます)は、繰り返しする場所ですよという合図です。
例えば下の例では、①の箇所が3回繰り返されますが、1回目で i に 1を代入したのち、②のブロックで a , b, cをjに代入し表示、さらに 10, 11, 12をkに代入し表示した後、①のブロックの最初に戻り、i に 2が代入され同じ処理に続きます。
for i in [1, 2, 3]:
print(i)
for j in ["a", "b", "c"]:
print(j)
for k in [10, 11, 12]:
print(k)
実行結果
1
a
b
c
10
11
12
2
a
b
c
10
11
12
3
a
b
c
10
11
12
ちなみにコロンを忘れた場合は、こんなエラーがでます。
for i in [1, 2, 3, 4, 5]
print(i)
実行結果
File "<ipython-input-X-XXXXXXXXXXXX>", line 1
for i in [1, 2, 3, 4, 5]
^
SyntaxError: invalid syntax
またインデントが無いと、こんなエラーがでます。
for i in [1, 2, 3, 4, 5]:
print(i)
実行結果
File "<ipython-input-X-XXXXXXXXXXXX>", line 2
print(i)
^
IndentationError: expected an indented block
ちなみに後ろにずれている場合は、大丈夫らしい。(知らなかった)
for i in [1, 2, 3, 4, 5]:
print(i)
実行結果
1
2
3
4
5
ですが、Pythonではインデントによってどこからどこまでがプログラムの塊(ブロック)なのか制御しているので、ちゃんとルールに沿ってインデントを使ってください。
また先にリストを作っておいても大丈夫です。
a = [1, 2, 3, 4, 5]
for i in a:
print(i)
実行結果
1
2
3
4
5
ちなみに繰り返し処理した後、繰り返し処理を抜けたい場合はインデントを無くした処理を書いてください。
先ほど書いた通り、forの直下では繰り返し処理を抜けることはできません。
1行でいいので、何か処理を書いてください。
for i in [1, 2, 3, 4, 5]:
print(i)
print(i)
実行結果
1
2
3
4
5
5
この例では、i に1から5まで入力され、for直下のprintで表示され、最後の5が i に入力されたまま繰り返し処理を抜け、最後のprintでその5が表示されています。
ですので、実行結果は1 2 3 4 5 5となるわけです。
ちなみに今回は数字を用いて解説しましたが、もちろん文字のリストでも可能です。
list1 = ["a", "b", "c", "d", "e"]
for i in list1:
print(i)
実行結果
a
b
c
d
e
またforの後の変数名も変数名のルールにしたがって入れば、何を入れても大丈夫です。
list1 = ["a", "b", "c", "d", "e"]
for hello in list1:
print(hello)
実行結果
a
b
c
d
e
2つ一緒に繰り返し処理
2つのリストを同時に変化させたい場合もあることでしょう。
そんな時はzip関数を使うとできます。
a = [1, 2, 3, 4, 5]
b = [6, 7, 8, 9, 10]
for i, j in zip(a, b):
print(i, j)
実行結果
1 6
2 7
3 8
4 9
5 10
注意点としては、繰り返し回数は短い数のリストの要素数に自動で合わせられます。
a = [1, 2, 3, 4, 5]
b = [6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
for i, j in zip(a, b):
print(i, j)
実行結果
1 6
2 7
3 8
4 9
5 10
またzipでもちいるリストは2つまでではなく、3つ以上でも可能です。
a = [1, 2, 3, 4, 5]
b = [6, 7, 8, 9, 10]
c = [11, 12, 13, 14, 15]
for i, j, k in zip(a, b, c):
print(i, j, k)
実行結果
1 6 11
2 7 12
3 8 13
4 9 14
5 10 15
とりあえず私的にfor文で使うのはこんな感じでしょうか。
次回は条件により処理を振り分ける関数、if文を解説していきます。
ということで今回はこんな感じで。
コメント