Python range() 関数:Float、List、For ループの例
Python Range とは
Python range() は、Python(3.x) 以降の Python で使用できる組み込み関数であり、指定された開始インデックスと終了インデックスに基づいて一連の数値を返します。開始インデックスが指定されていない場合、インデックスは 0 と見なされ、終了インデックスまで値が 1 ずつ増加します。
たとえば、range(5) は値 0,1,2,3,4 を出力します。Python の range() は非常に便利なコマンドであり、for ループを使用して反復する必要がある場合に主に使用されます。
このチュートリアルでは、次のことを学びます:
- Python Range とは?
- 構文
- Python range() 関数と履歴
- range() の使用
- range() で start と stop を使用する
- 開始、停止、ステップの使用
- 正のステップを使用して範囲内の値を増やします。
- Reverse Range:負のステップを使用して値を減らします。
- Python range() での浮動小数点数の使用
- Python range() で for ループを使用する
- Python range() をリストとして使用する
- python range() での文字の使用
- 範囲要素にアクセスする方法
- 例:range() を使用して偶数を取得する
- two-range() 出力のマージ
- NumPy で range() を使用する
構文
range(start, stop, step)
パラメータ
- 開始: (オプション) 開始インデックスは整数です。指定しない場合、デフォルト値は 0 です。
- 停止: 停止インデックスは、範囲関数が停止しなければならない値を決定します。範囲機能への必須入力です。最後の値は、常に停止値より 1 少ない値になります。
- ステップ: (オプション) ステップ値は、次の数値範囲をインクリメントする必要がある数値です。デフォルトでは 1 です。
戻り値:
戻り値は、指定された開始インデックスから終了インデックスまでの一連の数値です。
Python range() 関数と履歴
Python range() は、xrange() が関数になる前に、python バージョン 3 から導入されました。
range と xrange() の両方を使用して、一連の数値を生成します。
range と xrange() の違いは次のとおりです:
range() | xrange() |
---|---|
range() は一連の数字を返し、数字のリストを返します。 | xrange() 関数は、値を取得するために for ループでループする必要があるジェネレーター オブジェクトを提供します。 |
range() はリストを返します。 | xrange() はジェネレータ オブジェクトを返します。 |
range() メソッドは、返されるリストを xrange() に比べて保存する必要があるため、より多くのメモリを使用します。 | xrange() はジェネレーター オブジェクトを返すため、すぐには値を与えず、値を取得するには for ループ内で使用する必要があります。 |
メモリの使用量が多いため、膨大なデータ セットを処理する場合、コードの実行が遅くなります。 | xrange() を使用すると、コードの実行が高速になります。 |
range() の使用
この例では、range() を使用して 0 ~ 9 の値を出力する方法を示します。
range で使用される値は 10 なので、出力は 0 1 2 3 4 5 6 7 8 9 です。
start が指定されていないため、start は 0 と見なされ、最後の値は 9 まで指定されます。最後の値は常に、指定された値より 1 少ない値、つまり stop-1 です。
for i in range(10): print(i, end =" ")
出力:
0 1 2 3 4 5 6 7 8 9
range() で start と stop を使用する
コードでは、開始値は 3 で、停止値は 10 です。ここでは、開始インデックスが 3 であるため、一連の数字は 3 から停止値まで開始されます。シーケンスの最後の値は、停止値 10-1 =9 よりも 1 少なくなります。
for i in range(3, 10): print(i, end =" ")
出力:
3 4 5 6 7 8 9
開始、停止、ステップの使用
開始値が 3 であるため、一連の数字は 3 から始まります。終了値が 10 であるため、一連の数字は (10-1)、つまり 9 で停止します。ステップは 2 であるため、一連の各値は次のようになります。ステップ値が指定されていない場合、ステップの値はデフォルトで 1 になります。
for i in range(3, 10, 2): print(i, end =" ")
出力:
3 5 7 9
これまでのところ、 range() 関数が指定されたストップ値に対してインクリメントされた値を与える方法を見てきました。与えられた範囲内で減分された値を取得する例を試してみましょう.
正のステップを使用して範囲内の値を増やします。
range() のパラメーター step を使用して、値を増減できます。デフォルトでは、正の値 1 です。したがって、常に増加する値になります。
インクリメントされた値が出力として必要な場合、ステップ値は正でなければなりません。
for i in range(1, 30, 5): print(i, end =" ")
出力:
1 6 11 16 21 26
Reverse Range:負のステップを使用して値を減らします。
range() で負の値を持つパラメーター step を使用して、減分された値を取得できます。以下の例では、ステップ値が負であるため、出力は指定された範囲値から減少します。
for i in range(15, 5, -1): print(i, end =" ")
出力:
15 14 13 12 11 10 9 8 7 6
開始値は 15、停止値は 5、ステップ値は負の数、つまり -1 です。上記の入力を使用すると、 range() 関数は値を 15 から stop value に達するまで減少させますが、ここでの違いは、最後の値が stop + 1 になることです。
Python range() での浮動小数点数の使用
浮動小数点数を使用して range() に取り組みましょう。
例:
for i in range(10.5): print(i, end =" ")
上記の例では、ストップ値を 10.5 として使用しています。
出力は次のとおりです:
Traceback (most recent call last): File "python_range.py", line 1, in <module> for i in range(10.5): TypeError: 'float' object cannot be interpreted as an integer
range() 関数は開始、停止、およびステップの浮動小数点数をサポートしていないため、Python はエラーを返します。
Python range() で for ループを使用する
この例では、数値の配列を使用し、range() を使用して for ループ内で配列を反復処理する方法を見てみましょう
例:
arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase'] for i in range(len(arr_list)): print(arr_list[i], end =" ")
出力:
MysqlMongodb PostgreSQL Firebase
上記の例では、len(arr_list) を停止値として使用しました。 for ループは、arr_list に 4 つの項目があるため、停止値、つまり配列の長さまで反復し、それは 4 になります。開始値は 0 で、ステップは 1 です。したがって、値は 0 から開始し、3 で停止します。つまり、配列の長さ -1 は 4 -1 =3 を意味します。
Python range() をリストとして使用する
この例では、range からの出力をリストとして利用する方法を説明します。
例:
print(list(range(10)))
出力:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
出力がリスト形式であることがわかります。 range() をループする必要はなく、list() メソッドを使用して、出力を範囲からリスト形式に直接変換できました。
python range() での文字の使用
これまで、python range() で整数を使用してきました。 Python の範囲では浮動小数点数がサポートされていないことも確認しました。文字を使用するとどうなるか、出力を見てみましょう。
例:
for c in range ('z'): print(c, end =" ")
出力:
Traceback (most recent call last): File "python_range.py", line 1, in <module> for c in range ('z'): TypeError: 'str' object cannot be interpreted as an integer
文字列を整数として解釈できないというエラーがスローされます。
アルファベットのリストを取得するには、コードをカスタマイズして、以下に示すように目的の出力を取得します:
例:
def get_alphabets(startletter, stopletter, step): for c in range(ord(startletter.lower()), ord(stopletter.lower()), step): yield chr(c) print(list(get_alphabets("a", "h", 1)))
出力:
['a', 'b', 'c', 'd', 'e', 'f', 'g']
範囲要素へのアクセス方法
for ループを使用して範囲から値を取得したり、インデックスを使用して range() の要素にアクセスしたりできます。
for ループの使用
例:
for i in range(6): print(i)
出力:
0 1 2 3 4 5
インデックスの使用
インデックスは範囲で使用され、その位置で使用可能な値を取得します。範囲値が 5 の場合、開始値を取得するには、range(5)[0] と次の値 range(5)[1] などを使用できます。
例:
startvalue = range(5)[0] print("The first element in range is = ", startvalue) secondvalue = range(5)[1] print("The second element in range is = ", secondvalue) lastvalue = range(5)[-1] print("The first element in range is = ", lastvalue)
出力:
startvalue = range(5)[0] print("The first element in range is = ", startvalue) secondvalue = range(5)[1] print("The second element in range is = ", secondvalue) lastvalue = range(5)[-1] print("The first element in range is = ", lastvalue)
list() の使用
このメソッドは、range() からすべての要素を出力します。 list() を使用すると、range() からの要素がリスト形式で返されます。
例:
print(list(range(10)))
出力:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
指定された範囲のリスト出力を提供します。
例:range() を使用して偶数を取得する
range() を使用すると、入力として指定された範囲内の偶数のリストが取得されます。 range() のパラメータは、start が 2、stop が 20、step が 2 であるため、値は 2 ずつ増加し、stop-2 まで偶数になります。
例:
for i in range(2, 20, 2): print(i, end =" ")
出力:
2 4 6 8 10 12 14 16 18
two-range() 出力のマージ
この例では、itertools モジュールの chain() 関数を使用して 2 つの range() 関数を連結します。
例:
from itertools import chain print("Merging two range into one") frange =chain(range(10), range(10, 20, 1)) for i in frange: print(i, end=" ")
出力:
Merging two range into one 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
NumPy で range() を使用する
NumPy モジュールには、機能する arange() 関数があり、range() と同様の出力が得られます。 Arrange() は、range() と同じパラメーターを受け取ります。
構文:
arange(start, stop, step)
NumPy を使用するには、以下の手順に従います。
ステップ 1 :NumPy モジュールのインポート
import numpy
実行中に numpy モジュールが見つからないというエラーが表示される場合は、手順 2 に示すようにモジュールをインストールする必要があります。
ステップ 2 :NumPy をインストールします
pip install numpy
ステップ 3 :NumPy を使用した arange() の実行例
import numpy as np for i in np.arange(10): print(i, end =" ")
出力:
0 1 2 3 4 5 6 7 8 9
NumPy arange() を使用した浮動小数点数
range() を使用して浮動小数点シーケンスを取得することはできませんが、NumPy arange() を使用すると可能です。
例:
必要な範囲は 0.5 から 1.5 です。値は 0.2 ずつ増加します。
import numpy as np for i in np.arange(0.5, 1.5, 0.2): print(i, end =" ")
出力:
0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998
得られる出力は少し奇妙で、一部の浮動小数点数は小数点以下 16 桁で表示されます。これは、10 進浮動小数点数をバイナリ形式に格納する複雑さのために発生します。必要に応じて値を丸め、必要な小数点以下の桁数に制限することもできます。
まとめ:
- Python range() は、Python(3.x) 以降の Python で使用できる組み込み関数で、指定された開始インデックスと終了インデックスに基づいて一連の番号を返します。開始インデックスが指定されていない場合、インデックスは 0 と見なされ、終了インデックスまで値がインクリメントされます。
- Python range() は、xrange() が関数である前に、Python バージョン 3 から導入されました。
- range() は、一連の数字を返し、数字のリストを返します。 xrange() 関数は、値を取得するために for ループでループする必要があるジェネレーター オブジェクトを提供します。
- range() のパラメーター step を使用して、値を増減できます。デフォルトでは、正の値 1 です。したがって、常に増加する値になります。
- range() 関数は整数値のみをサポートするため、Python は浮動小数点数に対してエラーを返します。
- range() の値には、for ループ、index および list() を使用してアクセスできます
- NumPy モジュールには、機能する arange() 関数があり、range() と同様の出力が得られます。 arange() は、range() と同じパラメータを取ります。
- range() を使用してサポートされていない浮動小数点シーケンス NumPy arange() を取得することができます。
Python