Python

Pythonのrange関数がわかる!Python2との違いまで解説

分かりやすくコードを記述できることで人気のPython。ディープラーニングや機械学習でも注目されていますね。そんなPythonですが、現在はインターネット上で学習できるサイトも増えているので、独学で学習している人もいるでしょう。

そうした学習段階で分かりにくいとされるのがrange関数です。この記事ではrange関数の役割や使い方を解説していくので、つまずいている方は参考にしてみてくださいね。

range関数の役割・使い方

最初に、range関数の役割や基本的な使い方について説明します。
プログラミングでは基本を押さえることが大事なので、ここでrange関数の役割や使い方をマスターしておきましょう。

for文について

range関数の説明に入る前に、for文について簡単に解説します。
for文は繰り返し処理を行う構文ですが、range関数と組み合わせて使うことで繰り返しの回数を決めることができます。

そのため、range関数を理解するためにはfor文の理解が必要不可欠。まずはfor文の書き方の基本を理解しましょう。

次の構文がfor文を実行するコードの基本形です。

for 変数 in オブジェクト:
   実行する処理

通常の変数と同様、for文の「変数」には「Abc」や「num_961」など大文字・小文字のアルファベット、数字、アンダースコアを使用することができます。

「オブジェクト」には基本的には繰り返し回数を指定するものが入ります。今回説明するrange関数はオブジェクトの部分にあたる関数です。

「実行する処理」には文字列を出力する「print」などを記述します。

range関数の役割

range関数はfor文と組み合わせて使われることが多い関数です。
for文は繰り返し処理を行う構文でしたが、range関数によってその繰り返しの回数を決めることができます。

後ほど、実際のコードを記述しながらrange関数の使い方を説明しますが、ここではrange関数は繰り返し回数を決める関数と覚えておいてくださいね。

Pythonの配列の使い方・具体例

それではPythonの配列の具体的な使い方を解説していきます。配列の初期化方法から様々な操作方法までをまとめてあります。

配列に関する基本的機能はひと通り網羅したので、ぜひ参考にしてくださいね。

range関数の使い方

それでは、実際にコードを使用して解説していきます。

今回はrange関数を使用して範囲を指定し、for文で繰り返し数字を出力させるプログラムを書きましょう。

for i in range(7):
    print(i)

■実行結果







for文で「range(n)」とすると、0からn-1までの数値が順番に変数に代入されます。上記のプログラムでは「range(7)」としたので、変数「i」に0から6までの値が順番に代入されました。プログラムの世界では0から数値が始まることに注意してください。

このように、range関数は繰り返しの回数を決める時に使う場合が多いです。

range関数の具体的な使い方

次に、コードを見ながらrange関数の具体的な使い方を解説していきます。
Python3とPython2でのrange関数の違いも解説するので、ぜひ参考にしてくださいね。

連続した数値を出力

まずは、for文と組み合わせる基本的な使い方を紹介します。
range関数を使ったfor文で連続した数値を出力させるには、以下のようなコードを書きます。

for i in range(10):
    print(i)

■実行結果










先ほどと同じく、0から始まる数値が10個表示されます。ここで大事なポイントは、出力される一連の数値は0から始まることですね。

start・stop・stepについて

上の例では、range関の引数は1つだけでしたが、range関数は複数の引数を取ることができます。

for i in range(3,6):
    print(i)

■実行結果



「range(start, stop)」とすると、startからstop -1までの数値が順番に生成されます。上の例では「range(3,6)」としたため、3から5までが出力されました。

次にrange関数に引数を3つ渡した場合のコードを紹介します。

for i in range(0,8,2):
    print(i)

■実行結果




「range(start, stop, step)」とすると、startからstop – 1までの数値がstepずつ加算されながら生成されます。上の例では「range(0,8,2)」としたため。0から7まで+2されながら出力されました。

逆算で数値を出力

先ほどまで紹介したプログラムでは0,1,2,…と数値が昇順になっていましたが、逆順で出力することもできます。

for i in range(10,5,-1):
    print(i)

■実行結果

10



このように第三引数「step」を負の数にすることで逆順で数値を出力できます。上のコードだと10から6までの数値を-1ずつ表示できていますね。

昇順の場合と同じように、例えばstepの数値を-2とすると2個ずつ減少していきます。

for i in range(0,-5,-2):
    print(i)

■実行結果


-2
-4

小数を扱う方法

range関数で少数を扱いたいというときもあるでしょう。range関数はint型の整数にしか対応していないので、0.1のように小数をそのまま入力するとエラーになります。

このようなエラーを避けるためには、コードを少し変更する必要があります。

for i in range(8):
    print(i * 1/10)

■実行結果

0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7

上記のコードでは変数に1/10つまり0. 1を掛けた数を出力しています。
このように、range関数には小数を入れることができませんが、変数を計算する形を取ることで解決できます。

continueとbreakについて

for文を学んでいると同時に出てくるのが「continue」と「break」。
range関数と組み合わせることで応用ができるので、それぞれ紹介します。

continueについて

continue文は指定した処理をスキップさせることができます。
以下がcontinue文を使ったコードサンプルです。

for i in range(5):
    if == 3:
       continue
    print(i)

■実行結果




本来なら「range(5)」としているため、0から4までの数値が出てくるはずです。しかし変数「i」の値が3のときにcontinue文を使っているため、iが3の場合には処理がスキップされて、3は出力されないことになります。

breakについて

break文は繰り返し処理を終了させる方法として使われます。

for i in range(5):
    if i == 3:
       break
    print(i)

■実行結果



やはり「range(5)」としているため0から4までの数値が出てくるはずですが、変数「i」の値が3のときにbreak文を実行しているので、iが3のところで処理が終わります。

実行した処理結果のように、break文を使うと好きな所で処理を中断することができます。このように、同じ処理を何度も繰り返して行われる場合において、break文が使われます。

Python3とPython2でのrange関数の違い

スマホアプリやゲームソフトなど、様々なところで使われているプログラミング言語。電化製品や車と同じようにプログラミング言語自身も日々進歩しており、Pythonも少しずつ変更されています。

記事執筆時点でのPythonの最新バージョンは3.8.2。このようなバージョン3.x.xのPythonを一般に「Python3」と呼びます。

バージョン2.x.xの「Python2」もまだ使われていますが、Python2とPython3の間には互換性がありません。つまり、Python2で使用可能な構文が一部Python3では使用できず、またPython3で使用できるがPython2では使用できない構文もあるのです。

今回説明したrange関数も互換性のない構文の1つです。

Python3の環境でPython2のコードを使用するとエラーとなるので、それぞれのバージョンにおけるrange関数について解説します。

Python2のrange関数について

Python2では繰り返し回数を決める関数は2種類あります。range関数とxrange関数です。range関数はリストを作るのに対し、xrange関数はオブジェクトを返す関数になります。

少し分かりにくいので、簡単に説明しますね。

range関数ではすべての数値が入ったリストを作ってループ処理をするため、メモリに負担がかかります。一方、xrange関数は必要な個数のみ数値を作成・処理するので、メモリ使用量を減らすことができます。

そのため、Python2で繰り返し処理を行う回数が多いときにはxrange関数を使用します。

繰り返し回数が少ないときはどちらを使用しても大きな違いはありませんが、xrange関数の方がrange関数より早く処理できるため、Python2の環境ではxrange関数を使用する人が多いです。

Python3のrange関数について

Python3ではxrange関数はrange関数にまとめられました。
今回紹介したrange関数はPython3で使用した場合の説明なので、今回の記事をそのまま参考にしてもらえば問題ありません。

今後プログラミング学習で分からなくなったとき、インターネットでPythonのコードを調べる場合にはPython3とPython2のどちらを使用している環境なのかをよく確認してくださいね。

Pythonの個別指導なら『Tech Teacher』

引用元:Tech Teacher

このBlogを運営するTech Teacherは、Pythonを学習する社会人を対象に、初心者から挫折した人まで、一人ひとりの目的や学習状況にあわせた個別指導を行っています。

また、オンライン指導も選べるので、自宅でも対面でも受講できます。

一人ひとりに最適化された完全マンツーマン指導を提供

完全マンツーマン指導で着実に身につく!

Tech Teacherでは専任の教師が完全マンツーマン指導を行います。
学習状況や目標をしっかり把握した教師が、生徒様のご要望もふまえながら最適なオーダーメイドの指導をご提供します。

お仕事と両立しながら続けられる!

Tech Teacherなら、受講日時や回数を生徒様のご都合に合わせて柔軟に調整することができます。
そのため、お仕事との両立がしやすく、プログラミング学習を継続的に学習することができます。忙しい合間にプログラミングを学びたいという方におすすめです。

授業料は受けた分だけ!

Tech Teacherでは、生徒様が受けた授業の時間分だけ後払いで請求させていただきます。そのため、気軽にプログラミングの学習を始めることができます

以下のボタンからさらに詳しい情報をご覧いただけます。

まとめ

range関数はfor文と一緒に使われることが多い関数です。

for文はPythonでコードを書くなら覚えておかなければならない構文の1つなので、for文を学習するときにrange関数も一緒に覚えておきましょう。

range関数の注意点としてPython3とPython2では互換性がないことが挙げられます。同じ関数でも意味が違うので、学習するときにはどちらを使用しているか確認しておきましょう。