お困りの方へ
この記事では、組み込み関数のrangeの説明をします。
rangeの仕様
rangeの仕様書です。
rangeの引数の仕様は以下となっています。
引数 | 説明 |
---|---|
start | 区間の開始の数値。整数のみ。デフォルトは0。 |
stop | 区間の終了の数値(区間には含まれない。)。整数のみ。必須引数。 |
step | 間隔の数値。整数のみ。デフォルトは1。 |
rangeの基本的な使い方です。
for i in range(2): print(i) # 0 # 1 # 引数が1つだとstopの指定となる。 # start=0 stop=2 step=1になる。 for i in range(1, 3): print(i) # 1 # 2 # 引数が2つだとstart stopの指定となる。 # start=1 stop=3 step=2になる。 for i in range(2, 6, 2): print(i) # 2 # 4 # start=2 stop=6 step=4になる。
rangeを詳しく
使用するメモリの量
range関数は、rangeオブジェクトを返します。
rangeオブジェクトは常に一定の量のメモリを使います。
start、stop、stepの値のみを保存しているからです。
listを使えば、rangeが生成した値を確認できます。
r = range(1, 6, 2) print(r) print(type(r)) print(list(r)) # range(1, 6, 2) # <class 'range'> # [1, 3, 5]
少数は扱えない
rangeが生成する等間隔の値は整数のみです。
start、stop、stepに少数を入れるとTypeErrorになります。
r = range(1, 6, 0.5) # TypeError: 'float' object cannot be interpreted as an integer r = range(1, 6.5, 2) # TypeError: 'float' object cannot be interpreted as an integer
少数を扱いたい場合は、Numpyのarangeをご使用ください。以下の記事で説明しています。
NumPyのarangeとlinspaceで等間隔の値を生成するマイナス指定は可能
引数stepをマイナス値にすれば、デクリメントのfor文を作れます。
r = range(-2, -10, -2) print(list(r)) # [-2, -4, -6, -8] r = range(10, 2, -2) print(list(r)) # [10, 8, 6, 4] for i in range(5, 0, -1): print(i) # 5 # 4 # 3 # 2 # 1