Pythonのrange関数とは?実際のやり方をサンプルで解説

Pythonにはrange関数と呼ばれるコードがあります。range関数を利用すると、連続する数を扱うにあたって効率的な作業が期待できます。もしPythonを使ってプログラミングをしたければ、range関数をマスターしておくといいでしょう。

range関数の基本について理解しよう

range関数について、よくわからないという人もいるでしょう。そこで、まずはrange関数とはどのようなものなのか、使い方の基本について理解しておきましょう。

range関数とは

こちらの関数は連続する数のリストを配列するための関数です。Pythonでは、for文と併用で活用するのが一般的かもしれません。range関数で記述すれば、自分が設定した回数分を自由にループできます。

基本的な記述方法

Pythonにおけるrange関数の基本的な書き方は、以下の通りです。

range(start,end,step)

startは開始、endは終了、stepは増加幅を指します。たとえばrange(1,9,2)というソースコードがあったとします。これは「1から9までで2ずつ増加すること」というコマンドになるわけです。つまりこのコードを記述すれば、「1,3,5,7」がリストとしてオブジェクト内に保管される形になります。

またrange(end)というソースコードを使ってコマンドを出力することも可能です。この場合、startもstepも設定されていません。デフォルトはstartが0でstepが1です。もしrange(3)と記述した場合、該当するリストは「0,1,2」となります。

for文との組み合わせの記述方法

Pythonではfor文との併用で活用されるケースが多いと、すでに紹介しました。この両者の組み合わせによって、任意の回数ループ処理が手軽に行えるのです。ではfor文とrange関数と併用する場合のソースコードは、どのように記述すればいいのでしょうか。

基本的な記述方式として、以下のようなコードがあります。

for x in range(5):print(x)

この場合、出力は以下のようになります。

01234

endが5で、stepは1、startは0ですから、以上のように出力されるわけです。

range関数を使用するにあたっての注意点

Pythonにおけるrange関数は非常に使いやすい関数といえます。しかし、range関数を使用するにあたって、注意すべきポイントがいくつかあります。もし誤った使い方をすると、思うように出力されない恐れがあるので注意しましょう。

小数の設定は不可

range関数の中では、小数の設定はできません。たとえばrange(0.1,1.0,0.5)のようなソースコードを記述しても、リストは作られずエラー扱いにされてしまいます。

Python2系ではxrange関数の使用が推奨される

現在ではPython3系が主流になっていますが、いまだに過去バージョンであるPython2系を使用する場合もあるでしょう。2系を使用する際にはrange関数のほかにも、「xrange関数」も使用可能です。2系でプログラミングする際には、xrange関数を使用するのがおすすめです。

range関数も使用できますが、最初にリストを作成する必要があります。もしリストが大きければ、処理の負荷が大きくなってしまって、出力するまでに時間のかかる恐れがあるからです。xrange関数の場合、リストの追加と処理を順に行うスタイルをとっています。このため大きなリストの場合でも、かかる負荷はrange関数と比較して小さくなり、よって処理スピードも速くなるでしょう。

一方、Python3系ではxrange関数の処理をrange関数で行えるようになりました。よって、xrange関数は削除されています。そのため、Python3系だけを使用するなら、xrange関数について学習する必要は少ないでしょう。

range関数の応用的な使い方について解説

range関数は単独やfor文と組み合わせて使用する方法のほかにも、いろいろな使い方があります。その中でもしばしば用いられる、代表的な使用例について紹介するので参考にしてください。

list配列と共に使用する方法

range関数は、list配列と組み合わせて使用する方法がしばしば用いられます。要素を追加するにあたって、効率的に運用できるからです。

もし、list配列に特定の要素を追加したい場合には、range関数を用いると良いでしょう。たとえば、list関数で1~10の要素を追加し、のちに奇数要素のみを出力したいと考えたとします。この場合、以下のようなソースコードを入力してください。

list_tmp = list(range(1,11))list_tmp2 = list(range(1,11,2))print(list_tmp)print(list_tmp2)

このようにソースコードを作成すれば、以下のような実行結果が表示されるはずです。

[1,2,3,4,5,6,7,8,9,10][1,3,5,7,9]

list_tmp配列には1~10の整数が、list_tmp2配列に1~10の範囲内で奇数が要素として追加されたわけです。もしrange関数を使わなければ、list配列に1つずつ要素を指定していかないと追加されません。しかし、このように2行分のソースコードで簡単に追加が可能です。かなりの作業時間の短縮を期待できるでしょう。

ここまで紹介した方法は、順番通りにlist配列に整数をアップする方法について紹介しました。それだけでなくrange関数でコード生成すれば、逆順で要素をlist配列への追加も可能です。

やり方はシンプルです。startとendの順番を逆にして、stepを減らす方向で設定すれば良いでしょう。先ほどと同じように1~10の要素を逆順でlist配列に追加する場合のソースコードは、以下のようになります。

list_tmp = list(range(10,0,-1))print(list_tmp)

このように設定すれば、出力結果は[10,9,8,7,6,5,4,3,2,1]となります。stepの設定を1つずつ減らすという意味で「-1」と入力してください。

range関数で小数を記述する方法

range関数では、小数は入力できないとすでに紹介しました。しかし、数値計算とfor文などと併用すれば、小数を使用することも可能です。range関数で小数を適用する場合、数値計算でいったん小数点に変換する必要があります。

たとえば、rangeの値に0.1をかけて10までの配列に要素を追加したかった場合を仮定しましょう。この場合、以下のようなソースコードで対処します。

tmp=[]for x in range(10):tmp.append(x*0.1)print(tmp)

最初の行は、空のlist配列を規定したという意味です。このようなソースコードを記述すると、出力結果は以下のようになります。

[0.0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9]

このように小数点がlist配列に追加されていることが確認できました。しかし上の数列でも分かる通り、ただ単に0.1を乗算してしまうとずれが発生する可能性があります。確実に出力したければ、関連するライブラリをインポートすると良いでしょう。

シーケンスの生成

range関数を利用すれば、指定された範囲でシーケンスを生成して、データ構造を変換することも可能です。1~5の数を奇数のみの要素によって構成されるシーケンスを生成するための、ソースコードの記述方法は以下の通りです。

sequence = list(range(1,6,2))print(sequence)

実行すると、[1,3,5]と出力されるはずです。シーケンスを生成してリスト変換することで、さらに追加の作業でシーケンスの要素をアクセスしたり、リスト操作したりできるようになるでしょう。

Pythonのrange関数のまとめ

Pythonを使いこなすためには、range関数をマスターしておくと良いでしょう。こちらの関数を活用することで、コーディングの作業効率が大幅にアップすることが期待できます。しかも、range関数を用いたコードの作成方法も比較的シンプルです。

range関数のことがまだよくわからないのであれば、ここで紹介した方法を参考にして、実際に手を動かしてマスターしましょう。

最新情報をチェックしよう!