【Python】rangeの2つの意味を解説(関数と型)

【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関数は連続した数のオブジェクトを返す

他の「Python」の記事はこちらからどうぞ

Python

Posted by やろまい