ホームページ >バックエンド開発 >Python チュートリアル >Python で For ループの反復変数を変更してもループの動作が必ずしも変更されないのはなぜですか?
Python における反復変数の永続性を明らかにする
プログラミングの領域では、ループの有効性が最も重要です。 Python の for ループを使用する場合、変更したにもかかわらず反復変数が変更されないという複雑な動作に遭遇することがあります。この謎を解明するために、次のコードを調べてみましょう:
for i in range(0, 10): if i == 5: i += 3 print(i)
意図した結果は、i=5 に対応する要素が省略され、インクリメントされた値で置き換えられたシーケンスを出力することです。ただし、実際の出力では予期しない値が生成されます:
0 1 2 3 4 8 6 7 8 9
この偏差を理解するには、Python の for ループの仕組みを詳しく調べる必要があります。 C の対応物とは異なり、Python の for ループは反復変数の指定されたスコープを作成しません。これは、ループ内で i の値を変更しても、range(0, 10) によって生成されるシーケンスに影響を与えないことを意味します。
この問題を修正して目的の出力を実現するには、while ループを使用できます。 while ループを使用すると、反復をより詳細に制御できるため、ループの整合性を維持しながらカスタム増分と変数の変更の両方が可能になります。問題を修正する修正されたコード スニペットは次のとおりです。
i = 0 while i < 10: # Perform desired actions and modify `i` as needed if i == 5: i += 3 # Increment `i` after modifications i += 1
結論として、Python の for ループは便利ですが、予期しない動作を避けるためにその内部の仕組みを理解することが重要です。 while ループの柔軟性を利用することで、プログラマーは Python での反復と変数操作をより詳細に制御できます。
以上がPython で For ループの反復変数を変更してもループの動作が必ずしも変更されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。