for文のメモ書き【Python】

目次

結論。自分の理解まとめ。

「for 変数名 in 繰り返しオブジェクト」

繰り返しオブジェクトはリスト等でも良いし、関数を使って繰り返しオブジェクトを生成するのも良し。

  1. for 変数 in range(ループ回数の指定)
    • 繰り返す回数を決めたオブジェクトを作れる。forの変数にはカウンタが入る。
  2. for 変数1,変数2 in zip(オブジェクト1,オブジェクト2)
    • 複数のオブジェクトを指定して、同時にループ処理できる
  3. for 変数,インデックス変数 in enumerate(オブジェクト,,インデックス開始番号(任意))
    • オブジェクトの要素だけでなく、インデックスも同時に各変数から取得できる。
    • 任意の第二引数を指定することで、インデックスの開始番号を変えれる。

ループの基本

Pythonのfor文は繰り返しができるオブジェクトを使います。リストやタプル等です。こういうオブジェクトをイテラブルオブジェクトと言います。

リストでループする

リストの要素を全て取り出して何らか処理する時につかう。

PYTHONCOPY
list= ["A", "B", "C"]
for str in list:
print(str)

出力:
A
B
C

途中でループを終了する

PYTHONCOPY
list= ["A", "B", "C"]
for str in list:
# Bの場合、ループ処理を終了する。
if str == "B" : break
print(str)

出力:
A

breakを使うことで、ループ処理を強制終了することができます。

ループの途中で、一部の処理をスキップする

PYTHONCOPY
list= ["A", "B", "C"]
for str in list:
# Bの場合、処理をスキップして、次のループに行く。
if str == "B" : continue
print(str)

出力:
A
C

continueを使うことで、ループ処理の途中で、処理をスキップして、次のループ処理へ移ることができます。

ループ終了後に処理を行わせる

PYTHONCOPY
list= ["A", "B", "C"]
for str in list:
print(str)
else:
print("終了時")

出力:
A
B
C
終了時

elseを使うことで、ループ処理終了後に、処理を実行することができます。

関数を使って、もっとループ処理を便利にする

range関数を使って、何回繰り返すか決める

PYTHONCOPY
for i in range(3):
print("ループ"+str(i)+"回目")

出力:
ループ0回目
ループ1回目
ループ2回目

range関数の引数にループ回数を指定できます。また、iからはカウンタが取得できますが、0から始まるので、1からスタートしたい場合はi+1にすると良いでしょう。

zip関数を使って、複数のオブジェクト要素を取得する

HTMLCOPY
list = ["A", "B", "C"]
list2 = [1, 2, 3, 4]
for val,val2 in zip(list,list2):
    print("list:" + val + "//list2:" + str(val2))

出力:
list:A//list2:1
list:B//list2:2
list:C//list2:3

zip関数の引数に複数のオブジェクトを指定することで、同時にループ処理を行うことができます。

また、各オブジェクトの長さが違う場合は、最小のオブジェクトの長さ分のループしかできませんでした。

enumerate関数を使って、オブジェクト要素とインデックスを取得する

HTMLCOPY
list= ["A", "B", "C"]
for i, val in enumerate(list, 1):
    print(str(i)+"回目ループ。要素:"+val)

出力:
1回目ループ。要素:A
2回目ループ。要素:B
3回目ループ。要素:C

enumerate関数の引数にオブジェクトを指定することで、要素だけでなくインデックスも同時に取得できます。
またenumerate()には第2引数があり、インデックスの開始値を指定できます。わざわざ+1する必要は無くなります。

ちなみにカウンタとかではなく、インデックスと言うのかは良く分かりません。個人的な理解では、要素に対するインデックスなら、開始位置が変われば、紐づく要素も変わると思ったのですが、そうでもなかったので、ただのカウンタに見えています。ここがあまり理解できていないポイントです。どちらにせよループ回数みたいなものと思っとけば支障はないです。

Weekly Most Popular
記事書いたりサイト運営してる人
シイタ / siita
シイタ / siita
現役サラリーマン/システムエンジニアです。 会社外でも、自分に自信を持って活躍できるようになりたい。金銭的にも安心できるようになりたい。という気持ちから技術向上や不労所得を得るために、日々活動することを記録し、共有していきます。