ユーニックス総合研究所

  • home
  • archives
  • python-range

すぐわかる、Pythonのrangeの使い方

  • 作成日: 2021-02-10
  • 更新日: 2023-12-24
  • カテゴリ: Python

Pythonのrangeの使い方

プログラミング言語のPythonには数列を扱う組み込み関数range()があります。
このrange()を使うと一定範囲内のループ処理を簡単に書けたり、手軽に数列を得ることが出来ます。

Pythonのfor文ではこのrange()を使うことが多いので、馴染みの多い関数と言えます。

この記事ではPythonのrange()について解説します。
具体的には↓を見ていきます。

  • range()の構造
  • range()で数列を得る
  • range()でfor文を回す

range()の構造

Pythonのrange()は組み込み関数に分類されます。

range()は↓のような構造になっています。

class range(start, stop[, step])  

range()は組み込み「関数」に分類はされてますがその実体はクラスなんですね。
range()は最大で3つの引数を取ります。

start(第1引数: オプショナル)

startには生成する数列の開始点を指定します。
たとえば0から数列を得たい場合はこのstart0を指定します。
任意の数から数列を得たい場合はstartに任意の数を指定します。

range()に引数を1つだけ渡した場合、startには0が設定されます。

stop(第2引数: 必須)

stopには生成する数列の終了点を指定します。
たとえば数列を10まで生成したい場合はこのstop11を指定します。
20まで生成したい場合は21です。

range()に引数を1つだけ渡した場合、その引数はstopになります。

step(第3引数: オプショナル)

stepには生成する数列のステップ数を指定します。
たとえばstep2を指定すると、数列は0, 2, 4, ...と言う風に生成されます。
stepに負数を指定した場合、たとえば-2を指定した場合は数列は0, -2, -4, ...と言う風に生成されます。

range()で数列を得る

range()に任意の整数を渡すと数列を生成できます。
浮動小数点数はサポートしていません。

順列を得る

順列を得たい場合の1つの方法は、↓のように引数を1つだけ(stopにだけ)指定します。

range(4)  

↑の場合、0から4より下までの数列が生成されます。
ただしrange()だけでは数列は得られません。
print()range()を出力するとわかります。

print(range(4))  

↑のコードの結果は↓のようになります。

range(0, 4)  

range()を数列に変換するにはlist()tuple()などに渡して変換します。
たとえば↓のようにです。

print(list(range(4)))  

↑のコードの結果は↓のようになります。

[0, 1, 2, 3]  

また任意の開始点から任意の終了点までの数列を生成したい場合は↓のようにします。
↓の例では4から8より下までの数列を生成しています。

print(list(range(4, 8)))  

↑のコードの結果は↓のようになります。

[4, 5, 6, 7]  

任意のステップ数で順列を得る

range()stepを指定すれば任意のステップ数の数列を得ることが出来ます。
↓の例ではstart0, stop10, step2を指定しています。

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

逆列を得る

range()で逆列を得たい場合はstartに大きい値、stopに小さい値、stepに負数を指定します。
たとえば↓のようにです。

print(list(range(4, 0, -1)))  
[4, 3, 2, 1]  

逆列の場合はstopの値より大きい値までステップします。
↑の場合はstop0を指定してますが、得られるのは1までの数列です。

range()でfor文を回す

range()を使えばfor文を回すことが出来ます。
range()のもっともポピュラーな使い方ではないでしょうか。
いわばfor文とrange()はトムとジェリー、コロンボとかみさん、切っても切れない関係と言えます。

0から任意の数まで回す

0から任意の数までfor文を回したい場合は↓のようにします。

for i in range(4):  
    print(i)  

↑のコードの結果は↓のようになります。

0  
1  
2  
3  

↑のようにrange()list()などに変換しなくてもfor文に直接渡すことが出来ます。
具体的にはinキーワードに渡せるのがrange()なんですが。
range()for文を回す場合は↑のiのように生成される数列が順に渡されていきます。
↑の場合、数列は[0, 1, 2, 3]が生成されますので、iにはその数列の値が順に渡されていきます。

任意のステップ数で回す

任意のステップ数で回したい場合は↓のようにします。

for i in range(0, 10, 2):  
    print(i)  

↑のコードの結果は↓のようになります。

0  
2  
4  
6  
8  

任意の数から0まで回す

任意の数から逆順に回したい場合は↓のようにします。

for i in range(10, 0, -2):  
    print(i)  
10  
8  
6  
4  
2  

おわりに

今回はPythonのrange()について見て見ましたがいかがでしたでしょうか。
range()はPythonではよく使われる組み込み関数です。
ばっちり覚えておけば役立つこと間違いなしですね。

🦝 < range()で希望の数列を生成しよう

🐭 < 夢を掴め! 大志を抱け!