Pythonのrange関数について初心者向けに詳しく解説します
range関数とは・・
range関数は、連続する数のリストを生成するための関数です。
主にfor文と一緒に使われ、特定の範囲内の整数を順に処理する際に非常に便利です。
基本的な構文は下記の通りです。
range(開始値, 終了値, 増加量)
必須の引数は「終了値」のみで、開始値と増加量は省略することができ、
それぞれ省略した場合、開始値はデフォルト0、増加量はデフォルト1が設定されます。
では、具体例を見てみましょう。
開始値と増加量を省略して、終了値に5を指定して実行してみます。
for i in range(5):
print(i)
すると、下記実行結果が返却されます。
0
1
2
3
4
開始値をデフォルトの0として、終了値である5まで、1ずつ増加させた結果が返却されます。
これがrange関数の最もシンプルな使い方です。
次に開始値に2を指定して実行してみましょう。
for i in range(2,5):
print(i)
実行結果は下記の通りです。
2
3
4
開始値に指定した2から始まり、終了値である5まで、1ずつ増加させた結果が返却されます。
最後に増加量も指定した例を見てみましょう。
for i in range(2,10,2):
print(i)
実行結果は下記の通りです。
2
4
6
8
開始値に指定した2から始まり、終了値である10まで、2ずつ増加させた結果が返却されます。
負の値を指定する
増加量に負の値を指定することで、逆順の数列も生成することができます。
例えば、下記のコードは開始値に10、終了値を0、増加量を-2を指定したrange関数から得られた結果を、for文で回しています。
for i in range(10,0,-2):
print(i)
このコードの実行結果は下記の通りです。
10
8
6
4
2
開始値に指定した10から始まり、終了値である0まで、-2ずつ減算させた結果が返却されていることがわかります。
応用例
ここまでrange関数の基本的な使い方を見てきました。
ここからはもう少し応用的な使い方を見てみましょう。
「5で割り切れる」値を抽出する
このコードでは、0から21までの範囲の「5で割り切れる」値を抽出しています。
for i in range(1, 21):
if i % 5 == 0:
print(i)
こちらのコードの実行結果は、
5
10
15
20
となります。
10個の文字列を作る
こちらは、1から11までを範囲とすることで、1〜10までの文字列を作るコードです。
strings = ['num{}'.format(i) for i in range(1, 11)]
print(strings)
こちらのコードの実行結果は、
['num1', 'num2', 'num3', 'num4', 'num5', 'num6', 'num7', 'num8', 'num9', 'num10']
となります。
1から1000までの数の和を計算する
あまり綺麗な例ではないかもしれませんが、下記のようなコードを書くことで、数値の和を出すこともできます。
total = 0
for i in range(1, 1001):
total += i
print(total)
こちらのコードの実行結果は、
500500
となり、1から1000までを全て足し算した結果が得られます。
注意点
便利なrange関数ですが、いくつか注意点があります。
小数点は使用できない
range関数は小数点を指定することができます。
例えば、0.5ずつの値を取得しようして、下記コードを実行した場合、
for i in range(1,10,0.5):
print(i)
下記のように、「小数は指定できない」というエラーが返却されます。
TypeError: 'float' object cannot be interpreted as an integer
Pythonの2系と3系でrangeの動作が異なる
現在ではPython3系が主流ですが、Python2系を使用する場合もあるでしょう。
2系でもrange関数は使用可能ですが、xrange関数を使用することをオススメします。
どちらも同じような挙動をしますが、2系のrange関数の場合、処理スピードが遅くなる場合があります。
よって、3系のrange関数と同じ処理をする、xrange関数がオススメです。
(ちなみに3系ではxrange関数が廃止され、range関数で同じ動作をすることができるようになりました)
最後に・・
いかがでしたでしょうか?
range関数は、使用方法がシンプルな一方で、意外に使う場面が多い関数です。
ぜひマスターしていきましょう。