Pythonの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

以下、実行結果です。

関連 Pythonのlist 入門

% ./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と組み合わせるのが良いでしょう。

関連 python 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つ指定する