Python

【Python】range関数の使い方!範囲・最後の判定・初期値など

  • このエントリーをはてなブックマークに追加
  • LINEで送る

Pythonはrange関数で連番が作成できます。

でも…

『range関数の使い方は?』

『範囲を指定する方法は?』

『最後の判定はドコに境界があるの?』

『始まりを省略した時の初期値は?』

『range関数の戻り値は?』

 

こんな疑問に答えます。

SE歴25年のオッサンが解説するぞい!
SEおっさん
SEおっさん



スポンサーリンク

【Python】range関数の使い方!範囲・最後の判定・初期値

Pythonでrange関数を使えば、簡単に連番が作成できます。
引数に連番の開始・終了・間隔(増える値)をそれぞれ指定するとOK。

開始値や間隔値は省略することもできるぞい
SEおっさん
SEおっさん

関数仕様は次の通りです。
最後の判定は少しクセがあるので気を付けてみてください。

range 関数
  • 引数
    1. 開始(start)…任意(省略時は0)
    2. 終了(stop)…必須
    3. 間隔(step)…任意(省略時は1)
  • 戻り値
    開始(start)から終了(stop)の直前まで、間隔(step)づつ加算した連続値
  • 戻り値の型
    range 型のオブジェクト

戻り値はrangeオブジェクトで連続値となります。
連続値とは「startからstopの直前までstepづつ加算した値」のことです。

イメージはこんな感じ

第3引数の間隔(step)は『連番の間隔』という意味です。

カウントアップする量といった方がわかりやすいかも知れません。
(間隔がマイナス値の場合、カウントダウンする量になります)


間隔による連続値の範囲は次の通り。

【連続値の範囲】

間隔(step)がプラス
 stop≦連続値<stop

間隔(step)がマイナス
 stop≧連続値>stop

間隔(step)が正負(プラス・マイナス)により、連続値の範囲を表す不等号の向きが決まります。
間隔(step)がマイナスの時は、プラスと逆の不等号の向きです。

最後の判定は間違いやすいので注意しましょう。
終了値(stop)は含みません。stopの手前で終了します。

省略可能な引数は、開始値(start)と間隔値(step)です。

引数を省略時の初期値は次の通り。

【引数を省略時の初期値】

第1引数の始点・始まり(step)
 省略時の初期値…0

第2引数の終了(stop)
 必須。終了は省略不可です。

第3引数の間隔(step)
 省略時の初期値…1

 

たろちゃん
たろちゃん
うーん。わかり辛いかも…

例文で一緒に見ていこう
SEおっさん
SEおっさん



スポンサーリンク

【Python】range関数の例…リスト化と範囲・最後の判定

range関数の説明だけでは辛かったかもしれません。

range関数を使用した例文で具体例を見ていきましょう。

(例文)
range関数の引数(開始:2、終了:5、間隔1)のケース

x = range(2, 5, 1)
print(x)
print(list(x))
range(2, 5, 1)
[2, 3, 4]

第3引数の間隔に1を指定しているので、1づつカウントアップします。

たろちゃん
たろちゃん
print(x)の実行結果はカウントアップされた連続値じゃないね
range(2, 5, 1)になってるなぁ…

ややこしいところですが、
range関数の戻り値の型はrangeオブジェクトなんです。

なので、
renge関数は連続値を作成しますが、print(x)ではrange(2, 5, 1)となります。

戻り値はrangeオブジェクトじゃ
SEおっさん
SEおっさん

printで連続値が表示するにはリスト化(list型に変換)するとOKです。
print(list(x))の実行結果は[2, 3, 4]になってますね。
第3引数の間隔に1を指定しているので、1づつカウントアップして[2, 3, 4]となります。

たろちゃん
たろちゃん
2から始まってるけど、4で終わってるよ
終了値は5なのに、なんで5で終わらないの?

そうですね。大事なポイントは…

rangeの終了判定

です。
いったい「ドコからドコまで」を連続値の最後と判定するのでしょうか?

例文にある終了値が5の終了判定を考えてみましょう。
実行結果の表示は[2, 3, 4]となっています。
終了値は連続値に含まれてません。

終了値の手前に連続値の境界線があるのです。

例文は4と5の間に境界線があります。

イメージはこんな感じ

renge(2, 5, 1)で指定した終了値5は、連続値の対象外になります。
開始値の2の手前にも連続値の境界線がありますね。

つまり、
range関数が作成する連続値の範囲は

2≦連続値<5

開始値 ≦連続値<終了値
となります。

最後の判定は間違いやすいので注意しましょう。
引数で指定した終了値は含みません。終了値の手前で終了します。

終了値は対象外じゃ
SEおっさん
SEおっさん


2から5までの連続値を作りたかったら
range(2, 6, 1)と指定すればOKですね。

また、
間隔がマイナス値の場合は不等号が逆になりますが考え方は同じ。

開始値≧連続値>終了値

このように不等号は逆ですが、終了値は含みません。

 



スポンサーリンク

【Python】range関数の例…始まり省略時の初期値は0

range関数の引数は次の3つあります。

  1. 開始(start)…任意(省略時は0)
  2. 終了(stop)…必須
  3. 間隔(step)…任意(省略時は1)

第1引数と第3引数は省略可能です。

つづいて、
省略時の初期値を見ていきましょう。
第1引数を省略時の開始(start)は0
第3引数を省略時の間隔(step)は1

となっていますね。
第2引数の終了(stop)は省略不可で必須です。

SEおっさん
SEおっさん
ここまでOKかのぅ
次は例文じゃ♪

range関数の具体例!引数省略時の初期値

例文で具体例をみていきましょう。

(例文1)range(0, 3, 1)と(例文2)range(3)は同じ結果になります。


(例文1)
range関数の引数(開始:0、終了:3、間隔:1)

x = range(0, 3, 1)
print(list(x))
[0, 1, 2]

(例文2)
range関数の引数(開始:なし、終了:3、間隔:なし)

x = range(3)
print(list(x))
[0, 1, 2]

(例文1)も(例文2)も同じ連続値[0, 1, 2]となっていますね。



スポンサーリンク

【Python】range関数の使い方!まとめ

いかがでしたでしょうか?

range 関数の使い方について説明いたしました。
range関数は簡単に連続値を作成できるので、for文で良く使用されます。

 

振り返ってみましょう!

 

range 関数の基本構文です。

range 関数
  • 引数
    1. 開始(start)…任意(省略時は0)
    2. 終了(stop)…必須
    3. 間隔(step)…任意(省略時は1)
  • 戻り値
    開始(start)から終了(stop)の直前まで、間隔(step)づつ加算した連続値
  • 戻り値の型
    range 型のオブジェクト

 

range 関数の構文詳細です。

連続値と間隔
  • 連続値
    startからstopの直前までstepづつ加算した値
  • 間隔
    プラスの場合…カウントアップする量
    マイナスの場合…カウントダウンする量
連続値の範囲
  • stop≦連続値<stop
    最後の判定に注意
    終了値(stop)は含まず、stopの手前で終了
    (間隔がマイナスの場合は不等号が逆)

引数を省略時の初期値

第1引数の始点・始まり(step)を省略時は0

第3引数の間隔(step)を省略時は1

※第2引数の終了(stop)は省略不可で必須。

SEおっさん
SEおっさん
わかったかのぅ
深掘りしたい場合の下記をどうぞ♪

range関数は意外と奥が深いですよね。
~もう少し掘り下げて、ケーススタディしたい場合はコチラ~

【Python】range関数で1から連番・飛ばしの間隔・逆順など
【Python】range関数で1から連番・飛ばしの間隔・逆順など
Pythonのrange関数でチョットした応用をしたいあなたへ。 『1から連番にするには?』 『間隔を飛ばしで連番にするには?』 『逆順にどうやってするの?』 .....

 

range関数はfor文で頻繁に使用します。
range関数でカウントアップした連番をfor文ループでさせるのです。
~range関数を使用したfor文は学びたい場合はコチラ~

【Python】for文のインクリメントはrangeで変数にinする
【Python】for文のインクリメントはrangeで変数にinする
Pythonのfor文を使ってループしますが、 カウンタをインクリメントする方法が他言語と大きく異なります。 『for文でインデックスのインクリメント方法は?』.....

 

range関数の範囲・最後の判定・初期値は、
リストや文字列をスライスでも取得したい時も考え方は同じです。
~リストや文字列をスライスで操作したい場合はこちら~

【Python】スライスとは?リストや文字列を後ろから!飛ばしもOK♪
【Python】スライスとは?リストや文字列を後ろから!飛ばしもOK♪
Pythonでリストや文字列を操作できるスライスがあります。 スライスを使うとリストを後ろから逆順に取得したり、1つ飛ばしするのも自由自在。 だけど… 『そもそ.....

 

どんなコトでも解ってつもりじゃなく、本当の意味で理解することが重要。
一緒にガンバりましょー

SEおっさん
SEおっさん
ここまで読んでくれてありがとう!

「記事を読んでもわからないトコがある」「内容が変だよ」
という時は、お気軽にコメントください♪

「もっとSEおっさんに詳しく聞きたい。何かお願いしたい!」
という時は、ココナラまで。メッセージもお気軽に♪

LINEでのお問合わせも受付中!
LINE公式アカウント

メッセージをお待ちしています!

取得資格
  • 応用情報技術者
  • Oracle Master Gold
  • Java SE Gold
  • Java EE Webコンポーネントディベロッパ
  • Python エンジニア認定データ分析
  • 簿記2級


スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • LINEで送る

コメントを残す

*