[Python] while文でcontinueを使う

Pythonのwhile文は、条件が真である限りループを繰り返す制御構造です。

このループ内でcontinue文を使用すると、現在の反復をスキップし、次の反復に進むことができます。

例えば、特定の条件を満たす場合に処理をスキップしたいときに便利です。

これにより、無駄な処理を避け、効率的なコードを書くことが可能になります。

ただし、continueを使う際は、無限ループに陥らないように注意が必要です。

この記事でわかること
  • while文でのcontinueの基本的な使用例とその動作
  • continueを使ったフィルタリングやデータスキップの応用例
  • continueの使いすぎによる可読性の低下や無限ループのリスク
  • continueとbreakの違いと使い分け
  • continueを使わずに同様の処理を実現する方法

目次から探す

while文でcontinueを使う具体例

基本的な使用例

while文でcontinueを使う基本的な例を見てみましょう。

continueはループ内で特定の条件が満たされたときに、残りの処理をスキップして次のループに進むために使用されます。

# 1から5までの数字をループし、3のときはスキップする
i = 1
while i <= 5:
    if i == 3:
        i += 1
        continue
    print(i)
    i += 1
1
2
4
5

この例では、iが3のときにcontinueが実行され、print(i)がスキップされます。

その結果、3は出力されません。

条件に基づくcontinueの使用

continueを条件に基づいて使用することで、特定の条件を満たす場合にのみ処理をスキップすることができます。

# 偶数のみを出力する
i = 0
while i < 10:
    i += 1
    if i % 2 != 0:
        continue
    print(i)
2
4
6
8
10

この例では、iが奇数の場合にcontinueが実行され、偶数のみが出力されます。

ネストされたループでのcontinueの使用

ネストされたループ内でcontinueを使用することも可能です。

内側のループでcontinueを使うと、内側のループの次の反復に進みます。

# 2次元リストの中で特定の値をスキップする
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
row = 0
while row < len(matrix):
    col = 0
    while col < len(matrix[row]):
        if matrix[row][col] == 5:
            col += 1
            continue
        print(matrix[row][col])
        col += 1
    row += 1
1
2
3
4
6
7
8
9

この例では、matrixの中で値が5のときにcontinueが実行され、その値はスキップされます。

無限ループでのcontinueの使用

無限ループ内でcontinueを使用することもできます。

無限ループは通常、特定の条件が満たされるまで続けるために使用されます。

# ユーザーが0を入力するまで続ける
while True:
    number = int(input("数字を入力してください(0で終了):"))
    if number == 0:
        break
    if number < 0:
        print("負の数はスキップされます")
        continue
    print(f"入力された数字は: {number}")

この例では、ユーザーが負の数を入力した場合にcontinueが実行され、その入力はスキップされます。

0を入力するとループが終了します。

while文とcontinueの注意点

while文でcontinueを使用する際には、いくつかの注意点があります。

これらを理解しておくことで、コードの可読性やパフォーマンスを向上させることができます。

continueの使いすぎによる可読性の低下

continueを多用すると、コードの流れが複雑になり、可読性が低下する可能性があります。

特に、複数の条件でcontinueを使用する場合、どの条件でどの処理がスキップされるのかが分かりにくくなることがあります。

  • 可読性の低下の例:
i = 0
while i < 10:
    i += 1
    if i % 2 == 0:
        continue
    if i % 3 == 0:
        continue
    print(i)

このコードでは、iが2の倍数または3の倍数のときにcontinueが実行されますが、条件が多くなると理解しにくくなります。

無限ループのリスク

continueを使用する際に、ループの終了条件を適切に管理しないと、無限ループに陥るリスクがあります。

特に、continueによってループ変数の更新がスキップされる場合、ループが終了しないことがあります。

  • 無限ループの例:
i = 0
while i < 5:
    if i == 2:
        continue
    print(i)
    i += 1

このコードでは、iが2のときにcontinueが実行され、iの更新がスキップされるため、無限ループに陥ります。

break文との違いと使い分け

continuebreakはどちらもループの制御に使用されますが、その動作は異なります。

continueは現在の反復をスキップして次の反復に進むのに対し、breakはループ全体を終了します。

  • 違いの例:
i = 0
while i < 5:
    i += 1
    if i == 3:
        continue
    if i == 4:
        break
    print(i)

このコードでは、iが3のときにcontinueが実行され、3はスキップされます。

iが4のときにbreakが実行され、ループが終了します。

  • 使い分けのポイント:
  • continueは特定の条件で処理をスキップしたい場合に使用します。
  • breakは特定の条件でループを完全に終了したい場合に使用します。

これらの注意点を理解し、適切にcontinueを使用することで、より効率的で読みやすいコードを書くことができます。

応用例

continueを活用することで、さまざまな応用的な処理を実現することができます。

ここでは、continueを使ったフィルタリング処理、データのスキップ処理、エラーハンドリングの例を紹介します。

continueを使ったフィルタリング処理

continueを使用して、特定の条件に合致するデータをフィルタリングすることができます。

例えば、リストから特定の条件を満たす要素だけを選び出す場合に有効です。

# リストから偶数のみをフィルタリングする
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filtered_numbers = []
i = 0
while i < len(numbers):
    if numbers[i] % 2 != 0:
        i += 1
        continue
    filtered_numbers.append(numbers[i])
    i += 1
print(filtered_numbers)
[2, 4, 6, 8, 10]

この例では、numbersリストから偶数のみをfiltered_numbersリストに追加しています。

奇数の場合はcontinueでスキップされます。

continueを使ったデータのスキップ処理

データ処理の際に、特定の条件に合致するデータをスキップしたい場合にcontinueを使用することができます。

# リストから特定の値をスキップして出力する
data = ["apple", "banana", "cherry", "date", "elderberry"]
skip_value = "cherry"
i = 0
while i < len(data):
    if data[i] == skip_value:
        i += 1
        continue
    print(data[i])
    i += 1
apple
banana
date
elderberry

この例では、dataリストの中で"cherry"をスキップして出力しています。

continueを使ったエラーハンドリング

データ処理中にエラーが発生した場合に、そのエラーを無視して次のデータに進むためにcontinueを使用することができます。

# リストの要素を整数に変換し、エラーが発生した場合はスキップする
data = ["10", "20", "thirty", "40", "fifty"]
converted_data = []
i = 0
while i < len(data):
    try:
        number = int(data[i])
        converted_data.append(number)
    except ValueError:
        print(f"変換エラー: {data[i]} をスキップします")
        i += 1
        continue
    i += 1
print(converted_data)
変換エラー: thirty をスキップします
変換エラー: fifty をスキップします
[10, 20, 40]

この例では、dataリストの要素を整数に変換し、変換できない要素はエラーメッセージを表示してスキップしています。

continueを使うことで、エラーが発生しても処理を続行できます。

よくある質問

while文でcontinueを使うときのパフォーマンスへの影響は?

continueを使用すること自体は、通常のループ処理と比較して大きなパフォーマンスの影響を与えることはありません。

しかし、continueを多用することで、ループ内の条件分岐が複雑になり、結果としてコードの可読性が低下する可能性があります。

可読性が低下すると、コードの保守性が悪化し、間接的にパフォーマンスに影響を与えることがあります。

したがって、continueを使用する際は、コードの明確さを保つように心がけることが重要です。

continueを使わずに同じ処理を実現する方法は?

continueを使わずに同じ処理を実現するには、条件分岐を工夫することで可能です。

例えば、continueを使ってスキップしていた処理を、if文の中に入れることで同様の効果を得ることができます。

continueとbreakを同時に使うことはできるのか?

continuebreakは同じループ内で同時に使用することができます。

それぞれの役割が異なるため、特定の条件でループをスキップしたい場合と、ループを完全に終了したい場合の両方を実現することが可能です。

まとめ

while文でのcontinueの使用は、特定の条件で処理をスキップするための便利な方法です。

この記事では、continueの基本的な使い方から応用例、注意点について詳しく解説しました。

これにより、continueを効果的に活用するための知識を得ることができたでしょう。

今後は、実際のプログラミングでcontinueを活用し、コードの効率化と可読性の向上を目指してみてください。

当サイトはリンクフリーです。出典元を明記していただければ、ご自由に引用していただいて構いません。

関連カテゴリーから探す

  • 条件分岐 (17)
  • 繰り返し処理 (29)
  • URLをコピーしました!
目次から探す