【Python】range関数の使い方全10パターンを徹底解説

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2022年2月)

✔このような方へ向けて書かれた記事となります

「range関数って何?どんなことができるの?」

「実際にrange関数を作ってみたい。やり方全部教えて!」

「rangeオブジェクトから値を取得する方法は?for文だけなの??」

✔当記事を通じてお伝えすること

  • range関数とは?range関数では何ができる?
  • range関数の使い方 10パターン全て公開
  • rangeオブジェクトから値を取得する

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

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を使った例を上げていくと、

  1. 0から始まる
  2. startが0以外
  3. 1個飛ばし
  4. 逆順
  5. 空のオブジェクトを作成
  6. マイナスのオブジェクト
  7. 小数点で作成
  8. リスト化
  9. タプル化
  10. Python2での記述方法

特に興味があるものは、例を見ながらご自身でもターミナルを開いて使ってみて下さい。

タイトルとURLをコピーしました