Categories: Python

【Python】range関数の使い方(数列の生成)

この記事では、Pythonのrange()関数の使い方を解説します。

range()を使うことで任意の範囲の数列を生成することができます。生成した数列は、for文と組み合わせて任意の回数だけループ処理したり、リストに変換したりできます。

それでは、range()関数の使い方を見ていきましょう!

range関数とは?

先ほどからrangeのことを関数と言っていますが本当はクラスです。関数のように使われているrange()は、rangeクラスのコンストラクタです。

range()を実行するとrangeオブジェクトを生成します。

r = range(0)
print(type(r))

実行結果

<class 'range'>

rangeオブジェクトは、リストなどのコンテナオブジェクトを使わず、引数に渡された整数を元に計算によって数列を生成します。なので、数列の大きさによって使用するメモリのサイズが変わらず、常に一定のコストで使用することができます。

さらにrangeは、イミュータブルなシーケンス型です。なので、生成したrangeオブジェクトは、シーケンス型特有の演算を行うことができます。

要点
  • rangeはクラス
  • サイズによってコストが変わらない
  • イミュータブルなシーケンス型である

Linkシーケンスの使い方と特徴を解説

この記事では、以下のようにrange()関数で生成したrangeオブジェクトをlist()を使ってリストに変換し、結果を確認していきます。

r = range(3)
print(list(r))  # [0, 1, 2]

これらのことを踏まえた上でrange()関数の使い方を見ていきましょう!

range関数の使い方

range()関数の書式は以下の通りです。

range(stop)
range(start, stop[, step])

定義されている引数は以下のような感じです。どの引数も整数のみが指定できます。

start 開始値。指定されていない場合は0。
stop 終了値。
step 数列の加算値。指定されていない場合は1。

0からstopまでの数列の生成 : range(stop)

range()関数にstop引数のみを指定することで0 <= N < stopの範囲の連続した数列を生成することができます。

r = range(3)
print(list(r))  # [0, 1, 2]

r = range(5)
print(list(r))  # [0, 1, 2, 3, 4]

# 負の値を指定すると空となる
r = range(-3)
print(list(r))  # []

任意の範囲の数列: range(start, stop)

range()関数にstart引数とstop引数を指定することでstart <= N < stopまでの連続した数列を生成することができます。

r = range(1, 4)
print(list(r))

r = range(5, 10)
print(list(r))

実行結果

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

start < stopであれば負の数列を生成することができます。

r = range(-4, -1)
print(list(r))

r = range(-2, 3)
print(list(r))

実行結果

[-4, -3, -2]
[-2, -1, 0, 1, 2]

ステップの指定: range(start, stop, step)

range()関数にstartstopstep引数を指定することでstart ~ stopまでのstep幅の数列を生成することができます。

# デフォルトは 1
r = range(0, 10, 1)
print(list(r))      # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

r = range(0, 10, 2)
print(list(r))      # [0, 2, 4, 6, 8]

r = range(0, 10, 3)
print(list(r))      # [0, 3, 6, 9]

step引数に負の値を指定することで逆順の数列を生成可能です。その場合、start > stopになるように値を指定する必要があります。

r = range(-1, -4, -1)
print(list(r))       # [-1, -2, -3]

r = range(3, -3, -2)
print(list(r))       # [3, 1, -1]

まとめ

この記事では、Pythonのrange()関数の使い方を解説しました。

range()関数は、for文と組み合わせてループ処理されるので覚えておくと便利です!

Linkfor文を使ってループ処理をする方法

それでは今回の内容はここまでです!ではまたどこかで〜( ・∀・)ノ

ゆうまる

独学でプログラミングを勉強しているおじさん。いろんな言語を勉強したが浅く広くなためあまり仕事につながらない。また忘れっぽいため自分のブログを備忘録としても使っている。産まれてこのかたずっとネコを飼ってる生粋のネコ派。最近お腹が出てきて筋トレに奮闘中!

View Comments

Recent Posts

【Dart】コンストラクタのデフォルト引数について

Dartのコンストラクタのデフォルト引数…

2週間 ago

【Unity】有料アセットを無料で手に入れる方法

この記事では、Unityの有料アセットを…

4か月 ago

【Python】任意の秒数だけ処理を一時停止する方法【sleep()関数】

この記事では、Pythonで任意の秒数だ…

1年 ago

【Python】Wordの文書の新規作成と読み書き

この記事では、Pythonを使ってWor…

1年 ago

【Python】メタクラスって結局なんなの?

この記事では、Pythonのメタクラスに…

1年 ago