Pythonのrange
関数は、通常、開始値から終了値までの連続した整数を生成しますが、終了値は範囲に含まれません。つまり、range(a, b)
を使用すると、a
からb-1
までの整数が生成されます。
しかし、場合によっては、終了値を含む範囲、つまり閉区間を扱いたいことがあります。そのような場合、以下のように自分で関数を定義することができます。
def closed_range(start, stop, step=1):
dir = 1 if (step > 0) else -1
return range(start, stop + dir, step)
このclosed_range
関数を使用すると、開始値と終了値の両方を含む範囲を生成することができます。以下にいくつかの使用例を示します。
>>> list(closed_range(1, 10))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(closed_range(1, 10, 2))
[1, 3, 5, 7, 9]
>>> list(closed_range(10, 1, -1))
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
このように、Pythonでは組み込みのrange
関数を少し拡張することで、閉区間を簡単に扱うことができます。このclosed_range
関数は、ループ処理や数値の列挙など、さまざまな場面で役立つでしょう。