(最終更新月:2022年2月)
✔このような方へ向けて書かれた記事となります
「range関数って何?どんなことができるの?」
「実際にrange関数を作ってみたい。やり方全部教えて!」
「rangeオブジェクトから値を取得する方法は?for文だけなの??」
✔当記事を通じてお伝えすること
- range関数とは?range関数では何ができる?
- range関数の使い方 10パターン全て公開
- rangeオブジェクトから値を取得する
range関数とは?range関数では何ができる?
range関数とは、リストやタプルなどのデータ構造体に値を格納せずに、指定した範囲の連続した数値を返すことができる関数です。
range関数により返されるのはイテラブルなオブジェクトとなり、戻り値はfor文、もしくは配列などに変換する必要があります。
>>> type(range(10))
<class 'range'>
>>> for i in range(5):
... print(i)
...
0
1
2
3
4
通常の配列とは違い、メモリへの格納が不要です。使用するメリットとしては、大きな数値を扱いながらもコンピューターへの負担を最小限に抑えることが可能になることが挙げられます。
rangeオブジェクトの使い方 10パターン全て公開
基本的には、
range(start, stop, step)
という記述方法です。
- startは「範囲の始まり」
- stopは「範囲の終わり」
- stepは「数字の向きと何個ごとに出力するか」
を意味しています。
とは言いましてもなかなかイメージもわかないので10個のパターン全てをご紹介します。
0から始まる
range(範囲の終わり)
>>> for i in range(5):
... print(i)
...
0
1
2
3
4
数値は範囲の終わりの一つ手前まで出力されます。
引数一つの場合は、startは0、入力した値を範囲の終わりとみなします。
startが0以外
range(範囲の始まり、範囲の終わり)
>>> for i in range(3,10):
... print(i)
...
3
4
5
6
7
8
9
1個飛ばし
range(範囲の始まり、範囲の終わり、何個ずつか)
>>> for i in range(1,10,2):
... print(i)
...
1
3
5
7
9
逆順
2通りあります。
①range(範囲の始まり, 範囲の終わり, -1)
>>> for i in range(10, 1, -1):
... print(i)
...
10
9
8
7
6
5
4
3
2
②reversed(range(範囲の始まり, 範囲の終わり)
>>> for i in reversed(range(1,10)):
... print(i)
...
9
8
7
6
5
4
3
2
1
空のオブジェクトを作成
range(0)
>>> for i in range(0):
... print(i)
...
マイナスのオブジェクト
range(範囲の始まり、範囲の終わり、-1)
>>> for i in range(0, -10, -1):
... print(i)
...
0
-1
-2
-3
-4
-5
-6
-7
-8
-9
小数点で作成
小数点で範囲の指定はできません。
>>> for i in range(1.0, 10.0):
... print(i)
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'float' object cannot be interpreted as an integer
リスト化
list(range(範囲の指定))
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
タプル化
tuple(range(10))
>>> tuple(range(10))
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
Python2における「xrange」
xrange(start, stop, step)
>>> xrange(1,10,1)
(1, 2, 3, 4, 5, 6, 7, 8, 9)
rangeオブジェクトから値を取得する
値を取得する方法は主に2通りです。
- for文を使う
- オフセットを指定する
一つずつ見ていきます。
for文を使う
>>> for i in range(5):
... print(i)
...
0
1
2
3
4
オフセットを指定する
>>> range(5)[3]
3
まとめ
当記事の内容をまとめていきます。
range関数とは、リストやタプルなどのデータ構造体に値を格納せずに、指定した範囲の連続した数値を返すことができる関数です。
range関数を使用するメリットは、メモリの消費がとても少ないことと言えます。
具体的にrangeを使った例を上げていくと、
- 0から始まる
- startが0以外
- 1個飛ばし
- 逆順
- 空のオブジェクトを作成
- マイナスのオブジェクト
- 小数点で作成
- リスト化
- タプル化
- Python2での記述方法
特に興味があるものは、例を見ながらご自身でもターミナルを開いて使ってみて下さい。