Pythonで繰り返し処理 for関数の超基本的な使用法

スポンサーリンク

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関数を解説していきます。

Pythonで条件分岐 if関数 〜比較演算子の基本とfor関数との組み合わせ〜
Pythonで条件分岐するための関数if今回は条件分岐をするための関数ifに関してです。プログラミングをしていると、「ある条件の時はこの処理を、こういう条件の時はこの処理をしたい」と条件によって処理を変えたいなんてことも出...

ということで今回はこんな感じで。

コメント

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