Python range() 関数: Float、List、For ループの例

何ですか Python 範囲?

Python range()は組み込み関数であり、 Python from Python(3.x) は、指定された開始インデックスと終了インデックスに基づいて一連の数値を返します。開始インデックスが指定されていない場合は、インデックスは 0 と見なされ、終了インデックスまで値が 1 ずつ増加します。

例えばrange(5)は0,1,2,3,4の値を出力します。 Python range() は非常に便利なコマンドであり、主に for ループを使用して反復処理する必要がある場合に使用されます。

構文

range(start, stop, step)

技術パラメータ

  • 開始: (オプション) 開始インデックスは整数であり、指定されない場合、デフォルト値は 0 です。
  • やめる: 停止インデックスは、範囲関数が停止する必要がある値を決定します。 レンジ関数への必須入力です。 最後の値は常に停止値より 1 小さい値になります。
  • ステップ: (オプション)。ステップ値は、次の数値の範囲を増分する数値です。デフォルトでは 1 です。

戻り値

戻り値は、指定された開始インデックスから終了インデックスまでの数値のシーケンスです。

Python range() 関数と履歴

Python range() は Python バージョン 3 から導入されましたが、それ以前は xrange() が関数でした。

range と xrange() はどちらも数値のシーケンスを生成するために使用されます。

range と xrange() の違いは次のとおりです。

範囲() 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 となります。

開始が与えられていないため、開始は 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 から開始し、終了値まで続きます。シーケンスの最後の値は、終了値より 1 少ない 10-1 = 9 になります。

for i in range(3, 10):
    print(i, end =" ")

出力:

3 4 5 6 7 8 9

スタート、ストップ、ステップの使用

開始値は 3 なので、数字のシーケンスは 3 から始まります。終了値は 10 なので、数字のシーケンスは (10-1) つまり 9 で停止します。ステップは 2 なので、シーケンス内の各値は 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() で負の値を指定したパラメーター 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 値に達するまで値をデクリメントしますが、ここでの違いは、最後の値が stop + 1 になることです。

浮動小数点数の使用 Python 範囲()

ここで、浮動小数点数を使用して 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

Python range() 関数は start、stop、step の浮動小数点数をサポートしていないため、エラーが発生します。

forループの使用 Python 範囲()

この例では、数値の配列を使用し、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 つの項目があるため、停止値は 0 になります。 開始値は 1 で、ステップは 0 になります。したがって、値は 3 から始まり 1 で停止します。つまり、配列の長さ -4 は 1 -3 = XNUMX を意味します。

使い方 Python リストとしてのrange()

この例では、range からの出力をリストとして利用する方法を示します。

例:

print(list(range(10)))

出力:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

出力がリスト形式であることがわかります。 range() をループする必要はなく、list() メソッドを使用して出力を range 形式から list 形式に直接変換できました。

Python range()での文字の使用

これまで、Python の range() で整数を使用してきました。また、浮動小数点数は Python の range ではサポートされていないことも確認しました。文字を使用した場合に何が起こるか、出力を確認してみましょう。

例:

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)

出力:

The first element in range is =  0
The second element in range is =  1
The first element in range is =  4

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

XNUMX つの 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() と同様の出力を返します。 array() は 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 桁の小数点付きで表示されます。これは、XNUMX 進浮動小数点数をバイナリ形式で保存する複雑さが原因で発生します。必要に応じて値を丸め、必要な小数点以下の桁数に制限することもできます。

製品概要

  • Python range()は組み込み関数であり、 Python from Python(3.x) は、指定された開始インデックスと終了インデックスに基づいて一連の数値を返します。開始インデックスが指定されていない場合は、インデックスは 0 と見なされ、終了インデックスまで値が増分されます。
  • Python range()は、 Python バージョン 3、それ以前は xrange() が関数でした。
  • range() は数値のシーケンスを提供し、数値のリストを返します。xrange() 関数は、値を取得するために for ループでループする必要があるジェネレーター オブジェクトを提供します。
  • range() のパラメーター step を使用して、値を増加または減少させることができます。 デフォルトでは、正の値 1 です。したがって、常に増分値が与えられます。
  • Python range() 関数は整数値のみをサポートするため、浮動小数点数の場合はエラーが発生します。
  • range() の値には、for ループ、index および list() を使用してアクセスできます。
  • NumPy モジュールには arange() 関数があり、これが機能し、range() と同様の出力を返します。 arange() は range() と同じパラメータを受け取ります。
  • range() を使用すると、サポートされていない浮動小数点シーケンス NumPy arange() を取得することができます。