なぜ範囲(開始、終了)に終了が含まれないのですか? [重複] 質問する

なぜ範囲(開始、終了)に終了が含まれないのですか? [重複] 質問する
>>> range(1,11)

あなたにあげる

[1,2,3,4,5,6,7,8,9,10]

なぜ1-11ではないのですか?

彼らはただランダムにそのようにすることに決めたのでしょうか、それとも私が気づいていない何か価値があるのでしょうか?

ベストアンサー1

which を呼び出すと、 に等しい 10 個の要素を含むrange(0, 10)which が返されるのが一般的だからです。プログラマーは 0 ベースのインデックスを好むことに注意してください。[0,1,2,3,4,5,6,7,8,9]len(range(0, 10))

また、次の一般的なコード スニペットも検討してください。

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

range()がちょうど まで上がった場合、問題が発生することがわかりますか? プログラマーは明示的に 1 を引く必要があります。これは、プログラマーがよりもlen(li)を好むという一般的な傾向にも従います。for(int i = 0; i < 10; i++)for(int i = 0; i <= 9; i++)

開始値が 1 である range を頻繁に呼び出す場合は、独自の関数を定義することをお勧めします。

>>> def range1(start, end):
...     return range(start, end+1)
...
>>> range1(1, 10)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

おすすめ記事