Python 速習チュートリアル

Python for ループ

1. Python For ループ

for ループは、シーケンス(リスト、タプル、辞書、セット、または文字列)を反復処理(イテレーション)するために使用されます。

これは他のプログラミング言語の for キーワードとは異なり、オブジェクト指向言語で見られる「イテレータ」メソッドに近い働きをします。for ループを使用すると、リストやセットなどの各アイテムに対して一連のステートメントを一度ずつ実行できます。

1.1 リストのループ処理

リスト内の各アイテムを出力する例です。

fruits = ["リンゴ", "バナナ", "チェリー"]
for x in fruits:
  print(x)

for ループでは、あらかじめインデックス用の変数(カウンター)を定義しておく必要はありません。

2. 文字列のループ処理

文字列もイテラブル(反復可能)なオブジェクトであり、一連の文字で構成されています。そのため、文字列内の各文字をループで処理することが可能です。

2.1 文字列のイテレーション例

"banana" という単語の各文字をループで出力します。

for x in "banana":
  print(x)

3. break ステートメント

break ステートメントを使用すると、ループがすべてのアイテムを処理し終える前であっても、ループを途中で停止させることができます。

3.1 break の使用例(出力後)

x が "バナナ" のときにループを抜けます。

fruits = ["リンゴ", "バナナ", "チェリー"]
for x in fruits:
  print(x)
  if x == "バナナ":
    break

3.2 break の使用例(出力前)

出力の前に break を置くことで、"バナナ" 自体を出力せずにループを終了させます。

fruits = ["リンゴ", "バナナ", "チェリー"]
for x in fruits:
  if x == "バナナ":
    break
  print(x)

4. continue ステートメント

continue ステートメントを使用すると、現在のイテレーションを中断し、次のイテレーション(ループの次のステップ)へ進めることができます。

4.1 continue の使用例

"バナナ" のときだけ処理をスキップする例です。

fruits = ["リンゴ", "バナナ", "チェリー"]
for x in fruits:
  if x == "バナナ":
    continue
  print(x)

5. range() 関数

特定の回数だけコードをループさせたい場合は、range() 関数を使用します。
range() 関数は、デフォルトで 0 から始まり、1 ずつ増加し(これもデフォルト)、指定した数値の直前で終了する一連の数値を返します。

5.1 range() の基本

0 から 5 までの数値を出力します(6 は含まれません)。

for x in range(6):
  print(x)
注意: range(6) は 0 から 6 までの数値ではなく、0 から 5 までの数値(計 6 個)を生成します。

5.2 開始値の指定

range(2, 6) のように引数を 2 つ渡すことで、開始値を指定できます。この場合は 2 から始まり 6 の直前までとなります。

for x in range(2, 6):
  print(x)

5.3 ステップ値(増加量)の指定

デフォルトでは 1 ずつ増加しますが、3 つ目の引数を追加することで増加量をカスタマイズできます。

# 2 から始まり 30 の直前まで、3 ずつ増加させる
for x in range(2, 30, 3):
  print(x)

6. For ループ内の Else

for ループにおける else キーワードは、ループが正常に終了した(すべてのアイテムの処理が終わった)ときに実行されるコードブロックを指定します。

6.1 else ブロックの実行

ループ完了後にメッセージを表示する例です。

for x in range(6):
  print(x)
else:
  print("処理が正常に完了しました!")

注意: ループが break ステートメントによって停止された場合、else ブロックは実行されません

6.2 break 発生時の else の挙動

x が 3 のときに break するため、else ブロックはスキップされます。

for x in range(6):
  if x == 3: break
  print(x)
else:
  print("正常終了しました")

7. ネストされたループ (Nested Loops)

ループの中に別のループを入れることができます。
外側のループの 1 回のイテレーションごとに、内側のループが 1 周(完了まで)実行されます。

7.1 入れ子構造のループ例

形容詞と果物を組み合わせる例です。

adj = ["赤い", "大きな", "甘い"]
fruits = ["リンゴ", "バナナ", "チェリー"]

for x in adj:
  for y in fruits:
    print(x, y)

8. pass ステートメント

for ループは空のままにすることはできません。しかし、ロジックが未定などで中身がないループを記述する必要がある場合、pass ステートメントを入れることでエラーを回避できます。

for x in [0, 1, 2]:
  pass # 将来的にここにコードを書く予定