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

Python の `range(start, end)` が `end` 値を除外するのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-02 22:00:17334ブラウズ

Why Does Python's `range(start, end)` Exclude the `end` Value?

Range(start, end): End 値を除外する理由?

Python の range(start, end) 関数は一般的に一連の数値を生成するユーティリティを使用しました。ただし、 range() の独特な側面の 1 つは、終了値が除外されることです。たとえば、range(1, 11) は [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] を返し、11 で止まります。

これはなぜですか?答えは、 range() の広範な使用法とプログラミングにおける一般的な慣行にあります。

1.インデックス付けの均一性:

プログラマーは多くの場合、シーケンスの最初の要素がインデックス 0 として参照される、ゼロベースのインデックス付けを好みます。 range(0, 10) を使用すると、[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]。長さ (len(range(0, 10))).

2.ループと反復:

一般的なループ構造を考えます:

for i in range(len(li)):
    pass

range() に終了値が含まれている場合、このループはリスト li の有効なインデックスを 1 回超えて反復します。 。プログラマは範囲を指定するときに len(li) から 1 を引くのを忘れて、無効なループが発生する可能性があります。

3.イテレータとの一貫性:

Python では、 range() 関数はイテレータとして機能し、一度に 1 つずつ値を生成します。終了値が含まれている場合、反復を終了するための追加のチェックまたはロジックが必要となり、複雑さが増し、エラーが発生する可能性が生じます。

含める必要性への対処:

終了値を含める必要が頻繁にある場合は、機能を拡張するカスタム関数を作成できます。 range():

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

print(range1(1, 10))  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

range() による終了値の除外の背後にある理由を理解し、必要に応じてカスタム関数を利用することで、プログラマは Python コードでこの多用途ツールを効果的に活用できます。

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

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