【Python】rangeの2つの意味を解説(関数と型)
Pythonのrangeはあまり他の言語にはない概念で分かりにくいと感じている人も多いのではないでしょうか。
特にVBA経験者はRangeオブジェクトと混同して混乱しやすいと思います。(私は混乱しました)
今回は混乱しやすいPythonのrangeについて解説します。
range関数とrange型があることを知れば理解がはかどると思います。
Pythonのrangeには2つの意味がある
Pythonのrangeが理解しにくいのは、range関数とrange型という同じrangeなのに別の概念があるためだと思います。
それぞれがどのようなものなのか説明します。
1. range関数
for r in range(10):
print(r) # 0123456789
Pythonでfor文を書こうとすると、必ずといっていいほどこのようなコードに出会うと思います。
このコードで使われているrange(10)がrange関数です。
2. range型
range関数の返り値はrange型(クラス)
print(type(range(10))) # <class 'range'>
このようにrange関数の返り値はrange型(クラス)です。
range型は「変更できない連続している数」
range型は、数のイミュータブルなシーケンスを表し、一般にforループにおいて特定の回数のループに使われます。
https://docs.python.org/ja/3/library/stdtypes.html#typesseq-range
Pythonのrange型はこのように説明されています。
- イミュータブル ⇒変化しないこと
- シーケンス ⇒連続している
言い換えると、変更できない連続している数のことです。
変更できない点はタプルと同じですが、さらに連続した数という条件が加わります。
range(10)であれば、0から9までの連続した数のオブジェクトを返しているという訳です。
Pythonのrangeまとめ
- range関数の返り値はrange型(クラス)
- range型は「変更できない連続している数」
- range関数は連続した数のオブジェクトを返す