Pythonはrange関数で連番が作成できます。
でも…
『range関数の使い方は?』
『範囲を指定する方法は?』
『最後の判定はドコに境界があるの?』
『始まりを省略した時の初期値は?』
『range関数の戻り値は?』
こんな疑問に答えます。
【Python】range関数の使い方!範囲・最後の判定・初期値
Pythonでrange関数を使えば、簡単に連番が作成できます。
引数に連番の開始・終了・間隔(増える値)をそれぞれ指定するとOK。
関数仕様は次の通りです。
最後の判定は少しクセがあるので気を付けてみてください。
- 引数
- 開始(start)…任意(省略時は0)
- 終了(stop)…必須
- 間隔(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
【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づつカウントアップします。
range(2, 5, 1)になってるなぁ…
ややこしいところですが、
range関数の戻り値の型はrangeオブジェクトなんです。
なので、
renge関数は連続値を作成しますが、print(x)ではrange(2, 5, 1)となります。
printで連続値が表示するにはリスト化(list型に変換)するとOKです。
print(list(x))の実行結果は[2, 3, 4]になってますね。
第3引数の間隔に1を指定しているので、1づつカウントアップして[2, 3, 4]となります。
終了値は5なのに、なんで5で終わらないの?
そうですね。大事なポイントは…
rangeの終了判定
です。
いったい「ドコからドコまで」を連続値の最後と判定するのでしょうか?
例文にある終了値が5の終了判定を考えてみましょう。
実行結果の表示は[2, 3, 4]となっています。
終了値は連続値に含まれてません。
終了値の手前に連続値の境界線があるのです。
例文は4と5の間に境界線があります。
イメージはこんな感じ
renge(2, 5, 1)で指定した終了値5は、連続値の対象外になります。
開始値の2の手前にも連続値の境界線がありますね。
つまり、
range関数が作成する連続値の範囲は
2≦連続値<5
開始値 ≦連続値<終了値
となります。
最後の判定は間違いやすいので注意しましょう。
引数で指定した終了値は含みません。終了値の手前で終了します。
2から5までの連続値を作りたかったら
range(2, 6, 1)と指定すればOKですね。
また、
間隔がマイナス値の場合は不等号が逆になりますが考え方は同じ。
開始値≧連続値>終了値
このように不等号は逆ですが、終了値は含みません。
スライスを使うとリストや文字列でもrange関数の連番と同じように扱えることができます。
【Python】range関数の例…始まり省略時の初期値は0
range関数の引数は次の3つあります。
- 開始(start)…任意(省略時は0)
- 終了(stop)…必須
- 間隔(step)…任意(省略時は1)
第1引数と第3引数は省略可能です。
つづいて、
省略時の初期値を見ていきましょう。
第1引数を省略時の開始(start)は0
第3引数を省略時の間隔(step)は1
となっていますね。
第2引数の終了(stop)は省略不可で必須です。
次は例文じゃ♪
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 関数の基本構文です。
- 引数
- 開始(start)…任意(省略時は0)
- 終了(stop)…必須
- 間隔(step)…任意(省略時は1)
- 戻り値
開始(start)から終了(stop)の直前まで、間隔(step)づつ加算した連続値 - 戻り値の型
range 型のオブジェクト
range 関数の構文詳細です。
- 連続値
startからstopの直前までstepづつ加算した値 - 間隔
プラスの場合…カウントアップする量
マイナスの場合…カウントダウンする量
- stop≦連続値<stop
最後の判定に注意
終了値(stop)は含まず、stopの手前で終了
(間隔がマイナスの場合は不等号が逆)
第1引数の始点・始まり(step)を省略時は0
第3引数の間隔(step)を省略時は1
※第2引数の終了(stop)は省略不可で必須。
深掘りしたい場合の下記をどうぞ♪
range関数は意外と奥が深いですよね。
~もう少し掘り下げて、ケーススタディしたい場合はコチラ~
range関数はfor文で頻繁に使用します。
range関数でカウントアップした連番をfor文ループでさせるのです。
~range関数を使用したfor文は学びたい場合はコチラ~
range関数の範囲・最後の判定・初期値は、
リストや文字列をスライスでも取得したい時も考え方は同じです。
~リストや文字列をスライスで操作したい場合はこちら~
どんなコトでも解ってつもりじゃなく、本当の意味で理解することが重要。
一緒にガンバりましょー
「記事を読んでもわからないトコがある」「内容が変だよ」
という時は、お気軽にコメントください♪
「もっとSEおっさんに詳しく聞きたい。何かお願いしたい!」
という時は、ココナラまで。メッセージもお気軽に♪
LINEでのお問合わせも受付中!
LINE公式アカウント
メッセージをお待ちしています!
- 応用情報技術者
- Oracle Master Gold
- Java SE Gold
- Java EE Webコンポーネントディベロッパ
- Python エンジニア認定データ分析
- 簿記2級