Python: for文やwhile文での繰り返し(ループ)
Pythonでのfor文やwhile文を使った繰り返し処理(ループ)の書き方、 ループを抜け出すためのbreak文、 次のループへ進むためのcontinue文の書き方を解説しています。
for文
Pythonで繰り返し処理(反復処理)を行う構文の1つとして for文があります。
for 変数 in 繰り返し処理できる仕組み: 処理
in の後に指定する「繰り返し処理できる仕組み」
にはリストやタプルなどがあります。
繰り返すたびにリストの要素を先頭から順番に取得して、
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
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