Python: for文やwhile文での繰り返し(ループ)

Pythonでのfor文while文を使った繰り返し処理(ループ)の書き方、 ループを抜け出すためのbreak文、 次のループへ進むためのcontinue文の書き方を解説しています。

for文

Pythonで繰り返し処理(反復処理)を行う構文の1つとして for文があります。

書式
for 変数 in 繰り返し処理できる仕組み:
	処理

in の後に指定する「繰り返し処理できる仕組み」 にはリストやタプルなどがあります。
繰り返すたびにリストの要素を先頭から順番に取得して、 forの後に記述した変数に格納されます。

処理の部分はforブロックと呼ばれ、 字下げ(インデント)する必要があります。

リストでの繰り返し処理

リストを使った反復処理の例は次の通りです。
inの後にはリストを指定しています。 繰り返すたびにリストの要素が先頭から順番に変数 vへ代入されます。

li = ["a", "b", "c"]

for v in li:
	print(v)
	
# 実行結果
a
b
c

range()での繰り返し処理

range()オブジェクトはリストと同じように「繰り返し処理できる仕組み」の1つで、 整数の並びで構成されています。
例えば range(10)と指定すると、0から9までの10個の数値の並びが作成されます。

range()を使った具体的にコードは次の通りです。

for i in range(3):
	print(i)

# 実行結果
0
1
2

range()では開始と終了の数値を指定することもできます。 次のコードでは1から5までの数値を取得できます。

for i in range(1, 6):
	print(i)

# 実行結果
1
2
3
4
5

関連記事: rangeオブジェクトとは、使い方

while文

Pythonで繰り返し処理を実現する場合、 よく使われるのは for文ですが、もう一つの構文として 「while文」があります。

書式
while 条件:
	処理

while文では「条件」が True の間、 ブロックとして指定された文を繰り返し実行します。

while文を使ったコードは次の通りです。

i = 0

while i < 3:
	print(i)
	i += 1

# 実行結果
0
1
2

for文と違ってwhile文の場合は、 条件やループカウンタの指定を間違うと、 無限ループが発生する可能性があるので注意が必要です。

他のプログラミング言語でよくある 「do~while文」はPythonにはありません。 さらに「++(インクリメント演算子)」と 「--(デクリメント演算子」もありません。

ですから上のコードではカウンタを増加させるときに 「i++」ではなく「i += 1」と記述しています。 「i = i + 1」でも構いません。

ループ処理を抜け出す break

ループ処理を途中で抜け出したい場合は、break文を使います。 break文を使うと強制的にブロックを抜け出せます。

break

ループをネストしている(入れ子にしている)場合、 内側のループにあるbreak文では外側のループに移ります。 外側のループにあるbreak文ではループ全体を抜け出します。

次のコードでは、変数 i が3以上になるとループを抜け出します。 その結果 print(i)で表示されるのは「0,1,2」のみです。

for i in range(10):
	
	if i >= 3:
		break

	print(i)

# 実行結果
0
1
2

ループをネストさせた場合のbreak文

次のコードではループをネストさせています。 変数 k が2以上になると内側のループを抜け出し、 外側のループに移ります。

その結果外側のループは「0, 1, 2, 3」と実行されますが 内側のループは「0, 1, 2」しか実行されません。

for i in range(4):
	for k in range(5):

		print(i, k)

		if k >= 2:
			# 内側のループを抜け出す
			break

# 実行結果
0 0
0 1
0 2
1 0
1 1
1 2
2 0
2 1
2 2
3 0
3 1
3 2

次のループへ continue

ループ内の処理を中断し、次のループへ強制的に移りたい場合は, continue文を使います。

continue

break文はループ自体を抜け出しますが、 continue文はループを抜け出すのではなく、 ブロックの先頭に戻って次のループを実行します。

次のコードでは、変数 i が4以上かつ7以下の間は continue で次のループへ移ります。
その結果 print(i) で表示されるのは「0, 1, 2, 3, 8, 9」となります。

for i in range(10):

	if i >= 4 and i <= 7:
		# 次のループへ
		continue

	print(i)

# 実行結果
1
2
3
8
9
Python