イントロダクション
この記事では、Python の range() メソッドについて説明します。
range()` メソッドは Python の for ループで広く使われており、任意のシーケンスを走査したり反復したりするのに使われています。
Python の range() メソッド
range()` は関数というよりも、実際には不変のシーケンス型です。
これは range 型の数値の並びを返します。
Python の range() 関数を使うためのシンタックスは以下の通りです。
range(start, stop[, step])
|
ここで
- start(オプション) は、シーケンスの生成を開始する開始番号です。これはシーケンスに含まれ、言及されない場合、デフォルトで0に設定されます。
- stop は、シーケンス生成を停止する番号です(排他的)。
- step(オプション) は,シーケンス生成時のステップジャンプを指定します.省略した場合、デフォルトで 1 とみなされる。
Python で range() メソッドを使用する
では、実際にPythonの range() メソッドをどのように使うか、いろいろと見てみましょう。
1. 1つのパラメータを持つ
2つのパラメータ、 step と start はオプションで、デフォルトではそれぞれ 1 と 0 に設定されている。
しかし、シーケンスを生成するためには、stop パラメータは必須です。
stop だけが指定された場合、 range() 関数はステップ 1 で 0 から (stop-1) までのシーケンスを作成します。
以下の例を見てください。
#range() with one parameterprint("Type of object returned by range: ", type(range(5)))
list1 = list(range(5))
print("sequence generated by range() with 1 parameter: ", list1)
|
を出力します。
Type of object returned by range: <class 'range'>
sequence generated by range() with 1 parameter: [0, 1, 2, 3, 4]
|
見ての通り、このメソッドが生成する配列の型は range クラスのメンバです。
range()` の出力をタイプキャストすると、0 から 4(5-1) までの値からなり、ステップ 1 を含むリストが得られます。
2. 2つのパラメータを使う場合
同様に、2つのパラメータを指定して range() メソッドを使用することができます。
この場合、stepパラメータはデフォルトで1に設定されています。
この例では、簡単に説明することができます。
#range() with two parameterlist1 = list(range(3,7))
print("sequence generated by range() with 2 parameter: ", list1)
|
結果は以下の通りです。
sequence generated by range() with 2 parameter: [3, 4, 5, 6]
|
出力から明らかなように、stepは0に設定されている。
3. 3つのパラメータを持つ場合
すべてのパラメータを記載した場合、 range() 関数は start から stop-1 までのシーケンスを生成します。
開始値以降の各要素の値は、前の要素とステップの和として計算されます。
以下の例は、この事実を非常によく表しています。
#range() with three parameterlist1 = list(range(3,20,3))
print("sequence generated by range() with 3 parameter: ", list1)
|
結果は以下の通りです。
sequence generated by range() with 3 parameter: [3, 6, 9, 12, 15, 18]
|
出力から、シーケンスは3から19(20-1)の範囲の値で生成されていることがわかる。
最後の要素については、18+3=21がstop(20)を超えているため、シーケンスの生成は18で終了している。
Python で for ループで range() メソッドを使用する
先にも述べたように、range() は for ループ構造で広く利用されています。
簡単な例を見てみましょう。
#range() with for loopfor i in range(1,5):
for j in range(1,i+1):
print(j , end="")
print()
|
出力してみましょう。
1121231234 |
上のコードでは、内側のループで range(1,i+1) メソッドによって返されたシーケンスからの数字を各行に持つパターンを表示しようとしています。
外側ループの最後の反復(i=4)では、内側ループは1から(4+1)-1 =4までのjの値について反復します。
従って、出力は正当です。
まとめ
この記事では、Pythonの range() メソッドの概念を理解しました。
さらに質問がある場合は、下のコメント欄からどうぞ。