【Python入門】range関数の使い方(for文で繰り返し処理)

range Python

range関数の使い方です。

range関数を使うと、連続した数の簡単に扱うことができるので、for文で特定の回数を繰り返すループ処理に使われます。

range型の表示

range関数で連続した数を作ると、range型のオブジェクトが返ってきます。

range
In [1]:    range(3)
Out[1]:    range(0, 3)

In [1]: range関数で、rangeオブジェクトを作成して、表示する。
Out[1]: range型のオブジェクト


range型のオブジェクトの内容は、list関数に入れて表示します。

range
In [1]:    list(range(3))
Out[1]:    [0, 1, 2]

In [1]: range関数で、rangeオブジェクトを作成し、list関数で表示する。
Out[1]: rangeの内容

list型で連続した数を作成

list型で連続した数を作成すれば、range関数を同じデータとなりますが、入力に手間がかかるのと、メモリをたくさん使うことになります。

# range型
sample_1 = list(range(3))  # [0, 1, 2]

# list型
sample_2 = [0, 1, 2]

range関数のパラメーター(引数)

range(start, stop[, step])
start、stop、stepと、3つのパラメーターが設定できます。

パラメーターは、整数(int)を使用します。
浮動小数点数(float)で設定するとエラーになります。 # 1.0や0.5はエラー

start開始の値(整数)デフォルト: 0
省略ができる
stop終了の値(整数)必須
step連続する値の間隔(整数)デフォルト: 1
省略ができる

stepが正の場合

rangeの内容は、r[i] = start + step * i
制約条件は、i >= 0 かつ r[i] < stop
注意する点は、stopで設定した値は、rangeには含まれません。

range

stopのみ設定する。

# stop = 5
In [1]:    list(range(5))   # range(stop)
Out[1]:    [0, 1, 2, 3, 4]


startとstopを設定する。
startを1からにすると、rangeの内容から0がなくなる。

# start = 0, stop = 5(In [1]と同じ)
In [2]:    list(range(0, 5))   # range(start, stop)
Out[2]:    [0, 1, 2, 3, 4]

# start = 1, stop = 5
In [3]:    list(range(1, 5))   # range(start, stop)
Out[3]:    [1, 2, 3, 4]


start、stop、stepすべてを設定する。
stepを2にすると、値の間隔が2になる。

# start = 0, stop = 5, step = 1(In [1]、In [2]と同じ)
In [4]:    list(range(0, 5, 1))   # range(start, stop, step)
Out[4]:    [0, 1, 2, 3, 4]

# start = 1, stop = 6, step = 2
In [5]:    list(range(1, 6, 2))   # range(start, stop, step)
Out[5]:    [1, 3, 5]


stopは、stepで割り切れなくてもよい。

# start = 1, stop = 5, step = 2
In [6]:    list(range(1, 5, 2))   # range(start, stop, step)
Out[6]:    [1, 3]


stepに0を設定すると、エラー(ValueError)になる。

# start = 1, stop = 5, step = 0
In [7]:    list(range(1, 5, 0))   # range(start, stop, step)
ValueError: range() arg 3 must not be zero

stepが負(逆から)の場合

rangeの内容は、正の場合と同じで、r[i] = start + step * i
制約条件は、i >= 0 かつ r[i] > stop
注意する点は、stopで設定した値は、rangeには含まれません。

range

start、stop、stepすべてを設定する。
start > stop
stepを-1にする。

# start = 5, stop = 0, step = -1
In [8]:    list(range(3, 0, -1))   # range(start, stop, step)
Out[8]:    [3, 2, 1]

式にあてはめると、i >= 0なので、
i = 0: r[0] = 3 + -1 * 0 = 3 → r[0] > stop: 0
i = 1: r[1] = 3 + -1 * 1 = 2 → r[1] > stop: 0
i = 2: r[2] = 3 + -1 * 2 = 1 → r[2] > stop: 0
i = 3: r[3] = 3 + -1 * 3 = 0 → r[3] = stop: 0
i = 3のとき、値の制約を満たさない。


stopは、負の値をとれる

# start = 3, stop = -3, step = -1
In [9]:    list(range(3, -3, -1))   # range(start, stop, step)
Out[9]:    [3, 2, 1, 0, -1, -2]

for文で繰り返し処理

range関数は、for文で繰り返し処理する回数の指定に使用します。

range関数で繰り返し

# 3回の繰り返し
In [9]:    for i in range(3):  # [0, 1, 2]
               print(i) 
Out[9]:    0
           1
           2

for文は、range(3)の内容[0, 1, 2]から値を1つずつ取り出します。
ここでは取り出した値を表示する処理が、range(3)の値の個数だけ繰り返されています。

繰り返し処理の回数の、range関数の値の個数のため、range(1, 4)でも3回の処理されます。

# 3回の繰り返し
In [9]:    for i in range(1, 4):  #[1, 2, 3]
               print(i) 
Out[9]:    1
           2
           3

リスト(配列)の要素数で繰り返し

range関数は、リスト(配列)と組み合わせてfor文に使用します。

 In [10]:     name = ['ポ', 'テ', 'サ', 'ラ']
              for i in range(len(name)):
                  print(name[i])
 Out[10]:      ポ
               テ
               サ
               ラ      

リスト型のnameには、文字列が4つ入っています。
len関数は、リストのサイズを取得する関数なので、len(name)から4を取得できます。

len(name)は、range関数の中にあるので、range(4)となります。

for文は、range(4)の内容[0, 1, 2, 3]から値を1つずつ取り出します。
i = 0: print(name[0]) → name[0]: ポ
i = 1: print(name[1]) → name[1]: テ
i = 2: print(name[2]) → name[2]: サ
i = 3: print(name[3]) → name[3]: ラ

リスト型nameの値を、1文字ずつ表示することができました。
これは、range関数のサイズで繰り返しの回数を指定し、range関数の値でリスト(配列)の要素を指定しています。

まとめ

  • range関数を使って、連続する数を作ることができました
  • for文と組み合わせて、繰り返し処理の回数を指定することができました
  • len関数と組み合わせて、リストのサイズで、連続する数を作ることができました
タイトルとURLをコピーしました