Pythonのrangeについてまとめています。
Pythonのrange/構文
range()は、範囲指定した数列を生成します。
例えば、range(2,5)と指定した場合、2,3,4,5が返ってきます。
実施にスクリプトを書いて実行してみましょう。
#!/usr/bin/python3 print( "# rangeで0スタートの連番" ) print( range(10) ) print( list(range(10)) ) print( "# rangeで3~6の連番" ) print( list(range(3,7)) ) print( "# rangeで0~ 1つ飛ばしの数列" ) print( list(range(0,10,2)) ) print( "# rangeで降順の数列" ) print( list(range(10,0,-1)) )
上記ファイルをsample2.pyとして保存し、chmodで実行権限を与えて実行。
chmod +x ./sample2.py
以下、実行結果です。
% ./sample2.py # rangeで0スタートの連番 range(0, 10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # rangeで3~10の連番 [3, 4, 5, 6] # rangeで0~ 1つ飛ばしの数列 [0, 2, 4, 6, 8] # rangeで降順の数列 [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
range型をリスト型に変換
print( range(10) ) range(0, 10) print( list(range(10)) ) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
rangeで生成できるのはrange型という範囲を表すデータ型となります。
print文でrange型そのまま表示すると「range(0,10)」のような表示になります。いやいや、そこは、0,1,2,3…のような表示にしてほしいところですね。
上記サンプルでは、中身の値を表示するためにlist()でリスト型に変換して表示しています。
rangeで0スタートの連番
print( list(range(10)) ) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range関数で引数を一個だけ指定すると、0スタートの連番になります。
0スタートで10この数値になるので、0~9の数列になります。
引数1個のrange()は、forループ用によく使われます。単純に指定回数だけループするような場合は、引数1個だけのrangeをforと組み合わせるのが良いでしょう。
rangeで指定範囲の連続した値を生成
print( list(range(3,7)) ) [3, 4, 5, 6]
range関数で引数を2つ指定するとrange(開始値,停止値)という指定になります。
気をつける点は、停止値自体は含まれないという点。range(3,7)だと7は含まれません。
rangeで1つ飛ばしの数列を生成
print( list(range(0,10,2)) ) [0, 2, 4, 6, 8]
range関数で引数を3つ指定すると、range(開始値,停止値,ステップ数)という指定になります。第三引数で何個飛ばしにするかを指定できるんですね。
ステップ数に2を指定すると、1つ飛ばしの数列になります。
rangeで降順(逆順)の数列を生成
print( list(range(10,0,-1)) ) [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
rangeの第三引数のステップ数に負の値を指定すると、開始値から減っていく数列を生成できます。
range(10,0, -1)で、10から始まり、1つづつ減って1までの数列を生成します。
pythonのrangeのまとめ
- rangeは連番の数列を生成
- rangeの数列の範囲指定は引数を2つ指定する
- rangeで1つ置きや降順の数列を生成するには引数を3つ指定する