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