Python:range関数の使い方やforとlistとの組み合わせ方法を解説

Python:range関数の使い方やforとlistとの組み合わせ方法を解説

range関数は一定範囲の連番や等差数列を作成する事ができます。
この関数は開始から終了までの範囲を指定することができるので、for文などの繰り返し処理と共に使う事で効率的よくループ処理を行えます。
またrange関数は連番をサクッと生成できるのでlistと共に使う事も多いです。

range関数について

ここではrange関数の基本的な使い方や逆順の方法、listやfor文での組み合わせや、小数を扱う方法などを解説します。

range関数の使い方

range関数の記述方法は以下となります。

記述方法

range(start, stop, step)

start(開始)とstep(増分)の引数を省略して、stop(終了)だけ記述する「range(stop)」でもオッケーです。
startを省略した場合のデフォルト値は「0」で、stepを省略した場合は「1」です。
それでは、REPLを使って値を確認してみましょう。

(→REPLの使い方はこちら)

rangeの値例

>>> range(0,10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(0,10,2)
[0, 2, 4, 6, 8]
>>> range(8,10)
[8, 9]

注意が必要な点としては、プログラムの世界では数値は0から始まるため、stopの値は「終了値-1」となる点です。
扱う数値が1からスタートし10で終わりたい場合は以下のように指定します。

>>> range(1,11)
[ 1, 2, 3, 4, 5, 6, 7, 8, 9,10]

逆順にしたい時にはstepに負の値(-)を指定

stepに正の値を指定すれば昇順になりますが、負の値を指定すると降順(逆順)の数値を持ちます。

>>> range(0,10,1)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(10,0,-1)
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

stepを負の値にした時は、正の値と逆になるためstopの値は「終了値+1」となる点です。

またstep値が正の場合は、「開始<終了」でなければいけません。 負の場合は正の逆で、「開始>終了」でなければいけません。

>>> range(10,0,1)
[]
>>> range(0,10,-1)
[]

エラーとはなりませんが、中身が空っぽです。気を付けましょう。

list関数とrange関数の組み合わせ

range関数は、単体で使う事よりもlistやforなどと組み合わせて使うことが多いです。
range関数とlist関数と組み合わせる事で、連番のリストを素早く作成する事が出来ます。

例:1~100までの連番をlist化する

>>> serial_number = list(range(1,101))
>>> print(serial_number)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]

listの解説についてはこちらをご覧ください。

Python:list(リスト)型(配列)の使い方

range関数とfor文(繰り返し処理)の組み合わせ

もう一つよく使うのがfor文との組み合わせです。
range関数と組み合わせる事で、指定回数だけ繰り返し処理を行いたいときに効率的に行うことが出来ます。

応用:1~10までの数をプリントするが6回目の処理が来たらbreakで強制終了

for i in range(1,11):
	print('第' + str(i) + '回目の処理')
	if i == 6:
		print('6回目の処理となりましたので、処理を終了します。')
		break

実行結果

第1回目の処理
第2回目の処理
第3回目の処理
第4回目の処理
第5回目の処理
第6回目の処理
6回目の処理となりましたので、処理を終了します。

for文の解説についてはこちらをご覧ください。

Python:for文(繰り返し)

range関数で小数を扱う方法

連番を小数点で作成したいとき、range関数は小数を扱う方法が用意されていませんので、少し工夫が必要です。

例:range関数で小数の連番作成

for i in range(1, 10):
	print(i * 1/10)

実行結果

0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9

rangeで1~9の連番をfor文で繰り返し処理をするのですが、変数iに格納された数を1/10で掛け算すれば、少数となります。

また作成した少数のrangeをリストに格納する方法は以下の通りです。

例:range関数で小数のlist作成

f_list = []
for i in range(1, 10):
     f_list.append(i*1/10)
print(f_list)

実行結果

[0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]

まずは空のリスト(f_list)を作成し、繰り返し処理(for)でf_listに「i:1/10」の小数を追記します。
(リストに新しいデータの要素を追加したい場合は、「append」を使います。)

リストには、任意のデータ型(int型、float型、str型)のデータを格納できます。

データ型についてはこちらをご覧ください。
Python:データ型の種類と使い方を解説

pythonカテゴリの最新記事