ホームページ >バックエンド開発 >Python チュートリアル >Python の `range()` 関数が終了値を除外するのはなぜですか?

Python の `range()` 関数が終了値を除外するのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-29 09:52:10330ブラウズ

Why Does Python's `range()` Function Exclude the End Value?

Python の Range 動作を理解する: End を除外する

Python range() 関数は、start パラメーターと end パラメーターを指定して呼び出すと、シーケンスを生成します。 start パラメータから始まり、end パラメータの前で終わる数値。この動作は、シーケンスに末尾が含まれることを期待する一部のプログラマーにとって混乱を招く可能性があります。

この設計の背後にある理論的根拠を理解するには、いくつかの点を考慮すると役立ちます。

  • 0 ベースのインデックス付け: Python では、リストなどの多くのデータ構造は 0 からインデックス付けを開始します。 range(0, 10) は、0 から 9 までの 10 個の要素のシーケンスを生成します。
  • Inclusive Call: range() に end パラメーターが含まれている場合、range(len を使用する一般的な慣例が破られます) (リスト)) リストを反復処理します。リストの長さまでインデックスをインクリメントすると、範囲外の要素が含まれ、エラーが発生します。
  • 一般化: range() の設計により、より柔軟な使用が可能になります。たとえば、ゼロ以外の開始または負のストライド (ステップ) を持つシーケンスを生成できます。末尾を含めると、これらのユースケースが制限されます。

最初は直観に反しているように思えるかもしれませんが、range() で末尾を除外することは、実用的かつ論理的な目的の両方に役立ちます。一般的なプログラミング手法との一貫性を確保し、既存のコードとの下位互換性を維持し、数値シーケンスを生成するためのより汎用性の高い関数を提供します。

シーケンスに末尾を含める必要がある場合は、カスタム関数を定義できます。範囲の動作を拡張します:

def range_inclusive(start, end):
    return range(start, end + 1)

この関数は range() と同様に動作しますが、生成されたシーケンスに end パラメータが含まれます。

以上がPython の `range()` 関数が終了値を除外するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。