【Python】range関数の記述方法!for文・list・小数との使い方を解説

Pythonで連続する数を扱いたいときは「range関数」を利用すると便利です。繰り返し処理でも頻繁に利用されますが、

・range関数の使い方がわからない
・繰り返し処理などで使うとエラーが出てしまう

などのお悩みを持つ方は多いのではないでしょうか。そこでこの記事では、

・range関数の基礎的な使い方
・range関数の記述方法、活用方法
・これらのサンプルコード

を分かりやすく解説します。
Pythonを使いこなす上で、range関数は欠かせない要素の一つです。この記事を参考にrange関数について基礎から学んでいきましょう。

公開日:2024年2月19日

【Python】range関数の基礎的な使い方と記述方法

range関数とは、連続した数のリストをrange型オブジェクト内に生成する関数です。ここでは、range関数の記述方法やfor文との組み合わせ方について解説します。

range関数の記述方法

range関数の基本的な記述方法は次のとおりです。

startは開始地点、endは終了地点、stepは増加幅を表します。例えば「range(1,11,2)」であれば[1,3,5,7,9]のリストがオブジェクト内に格納されます。また、より簡潔に次のように記載することも可能です。

この場合はstartが0、stepが1となり、例えば「range(5)」とすると[0,1,2,3,4]のリストが作成されます。

for文と併用すると任意の回数ループ処理ができる

range関数はよくfor文と組み合わせて利用されます。for文と併用することで、簡単に任意の回数ループ処理が実現できるからです。

for文は繰り返し処理を行うのに欠かせません。for文について理解を深めれば、より複雑なプログラムも作成できるようになるでしょう。

for文について詳しくは、「python for文を初心者向けに解説!for文基礎はこれで完璧」で具体的なソースコードを使いながら解説しているので、参考にしてください。

range関数とfor文を使ったサンプルコード

実際にrange関数とfor文を組み合わせたサンプルコードを見てみましょう。

【出力結果】

このサンプルコードは、range関数とfor文を組み合わせる際の最も基礎的なコードといえるでしょう。
for文で変数「i」にrange関数によって[1,2,3,4,5]が順番に格納され、このリストの格納数分、繰り返される処理になっています。

for文のなかではprint関数で現在の数値(iの値)と文字列「.Udemy」をつなげて出力しています。
このとき、変数iは整数型(int型)であるため、文字列型(str型)に変換しないとエラーが出る点に注意してください。

\文字より動画で学びたいあなたへ/

Udemyで講座を探す >

【Python】range関数の活用方法

ここからは、さらにrange関数を使いこなすための活用方法をいくつか紹介します。

list配列に連続的な要素を追加する

list配列は本来一つずつ要素を追加する必要があります。しかし、range関数を利用すれば連番のlist配列を簡単に追加することが可能です。

【出力結果】

このようにlist配列のli変数には[1,2,3,4,5]と、一つずつ要素を追加しています。対して、range関数を用いたrange_li変数はrange関数で範囲を指定するだけです。どちらも出力結果は同じであり、list配列の要素数が増えたり、修正が必要になったりする際には特にrange関数の便利さが際立つでしょう。

出力する際の注意点として、range_li変数はrange型オブジェクトであるため、そのままprint関数で出力してもリストが表示されません。出力する際はlist型に変換してから出力する必要があります。

Pythonの配列listについて詳しくは、「Python配列の基礎!リスト(list)の初期化方法から基本操作まで解説」で解説していますので参考にしてください。

範囲を逆順で指定する

range関数のstepは増加幅ですが、負の数を指定することも可能です。負の数を指定すればマイナス方向に加算されるため、範囲を逆順で指定できます。

【出力結果】

この指定は「100から始まり0で終わる、増加幅は-10」を意味しており、100から-10ずつ加算されてリストが作成されます。このようにstepに負の数を指定することで、逆順のリストを作成することが可能です。

リスト内包表記で小数を扱う

range関数では小数を扱えません。range関数で小数を扱いたいときには「リスト内包表記」を利用しましょう。リスト内包表記とは、既存のリストから新しいリストを作成するためのリスト作成方法の一つです。Pythonの特徴の一つでもあるため、この機会にぜひ覚えておきましょう。

【出力結果】

range関数を用いて小数を扱いたい場合は、整数のリストを作成したあとに0.1倍して小数に変換します。この処理はリスト内包表記を使わずとも記述できますが、リスト内包表記であれば簡潔に記述することが可能です。

どちらも処理内容としては、for文とrange関数で整数の[0,2,4,6,8]のリストを作成し、各要素を0.1倍してリストを再作成しています。このとき、小数との積は表示がずれる場合があるため、round関数を利用しましょう。

NumPyで小数を扱う

Pythonの拡張モジュールである「NumPy」を用いれば、range関数で整数を扱う場合と同じ要領で小数を扱えます。前述のとおり、標準モジュールだけでもリスト内包表記を用いれば簡潔に記述できますが、NumPyが使える環境であり、複数回利用する場合には便利ですので覚えておきましょう。

【出力結果】

NumPyではarange関数が標準のrange関数と同じように利用できます。NumPyのインストール方法から基本的な使い方については、「Pythonの拡張モジュール「NumPy」とは?インストール方法や基本的な使い方を紹介!」をご覧ください。

【Python】range関数を使う際の注意点

最後に、range関数を利用する上で注意したい点を2つ紹介します。

floatで小数を指定することはできない

前述のとおり、range関数では小数(float)を指定できません。例えば、次のようなコードはエラーになります。0~1までの間で0.2ずつ増えるリストを作成しようとしましたが失敗しています。

【出力結果】

range関数を用いて小数を扱いたい場合は、前述のとおりリスト内包表記で処理するか、拡張モジュールのNumPyを使うようにしましょう。

Python2系ではxrange関数を使用する

Pythonの現在の主流は3系ですが、場合によっては過去バージョンの2系を利用することもあるでしょう。2系を利用する場合には、range関数とxrange関数の2種類が存在することに注意し、xrange関数を使用しましょう。

Python2系のrange関数では最初にリストを作成するため、リストが大きいほど処理の負荷も大きくなってしまいます。対して、xrange関数では順にリストの追加と処理を行うため、range関数に比べて負荷が少なく処理も早くなります。特段の理由がない限り、Python2系ではxrange関数を使うようにしましょう。

Python3系ではxrange関数の処理がrange関数で行われるようになり、xrange関数は削除されました。この記事はPython3系を対象としたものであるため、range関数を用いたサンプルコードを記載していますが、Python2系を利用する際には注意してください。

Pythonのrange関数を使いこなそう!

range関数を上手に利用すれば、コードを簡潔に記載できるようになります。for文と組み合わせて利用する機会が多く、リスト内包表記の使い方を理解する上で、わかりやすい例にもなります。この機会にrange関数についての理解を深め、使いこなせるようになりましょう。

「もっとPythonの基礎から学びたい」という方には、以下の講座がおすすめです。Pythonの基本操作から動画を使って解説しているため、体系的に基礎知識を身につけることができます。

Udemyおすすめ講座

現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル

現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル

4.4(23,680 件の評価)

138,027 人の受験生

作成者: 酒井 潤 (Jun Sakai)(アメリカ シリコンバレー現役エンジニア、東アジア競技大会 金メダリスト サッカー選手)

現役シリコンバレーエンジニアが教えるPython入門!応用では、データ解析、データーベース、ネットワーク、暗号化、並列化、テスト、インフラ自動化、キューイングシステム、非同期処理など盛り沢山の内容です!

\無料でプレビューをチェック!/

講座を見てみる

評価:★★★★★
pythonの王道のコードを学べただけでなく、さまざまなライブラリの使い方を知ることができました。

評価:★★★★★
一つ一つの項目が必要十分な単位でまとめられているため、後ほど再度学習したい場合に便利です。

range関数と併せて、Pythonを使いこなすために基礎から学んでみてはいかがでしょうか。