Python 浮點數的範圍
-
在 Python 中使用
numpy.arange()
方法獲取浮點數的範圍 - 使用 Python 中的列表推導獲取浮點數的範圍
- 在 Python 中使用生成器推導法獲得浮點數的範圍
- 使用 Python 中的生成器函式獲取浮點數的範圍
-
在 Python 中使用
numpy.linspace()
方法獲取浮點數的範圍
在本教程中,我們將研究各種方法來獲取 Python 中的浮點數序列。假設我們需要一系列步長為 0.1
的數字,但是問題是 range()
函式不接受浮點數作為輸入,而是返回 TypeError
。
我們可以使用以下說明的方法在 Python 中生成具有統一步長的浮點數序列。
在 Python 中使用 numpy.arange()
方法獲取浮點數的範圍
numpy.arange(start, stop, step)
方法返回 start
和 stop
值內的一系列值,步長等於 step
值。start
和 step
引數的預設值分別為 0 和 1。
使用 numpy.arange()
方法的優點是它可以生成浮點數的範圍。但這不是 Python 的預設函式,需要 NumPy
庫才能使用它。
下面的示例程式碼演示瞭如何使用 numpy.arange()
方法來獲取步長等於 0.1
的從 0
到 1
的值序列。
import numpy as np
seq = np.arange(0, 1, 0.1)
print(seq)
輸出:
[0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]
使用 Python 中的列表推導獲取浮點數的範圍
列表推導是從 Python 中的現有列表建立新列表的語法方法。我們可以根據 range()
方法返回的值序列建立一個新列表,從而生成浮點數的範圍或序列。
由於 range()
方法只能生成整數序列,因此我們必須將序列的每個值乘以或除以所需的浮點數才能獲得所需的序列。由於將整數 3
與浮點數 0.1
相乘會返回 0.30000000000000004
,因此必須首選將整數除以 10
才能生成浮點數序列。
以下示例程式碼演示瞭如何使用列表推導方法在 Python 中獲取浮點數的範圍或序列。
seq = [x/10 for x in range(0, 10)]
print(seq)
輸出:
[0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]
在 Python 中使用生成器推導法獲得浮點數的範圍
生成器推導是一種類似於列表推導的語法方法,它可以在 Python 中建立可迭代的生成器物件。我們可以使用 next()
方法從生成器訪問新值,或者使用 for
迴圈遍歷整個序列。
下面的示例程式碼演示瞭如何使用生成器理解來獲取 Python 中的浮點數範圍。
seq = (x/10 for x in range(0, 10))
for x in seq:
print(x, end= " ")
輸出:
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
使用 Python 中的生成器函式獲取浮點數的範圍
儘管生成器理解是在 Python 中獲取生成器物件的一種簡潔明瞭的方法,但是 generator 函式是一種使用 start
、stop
和 step
值獲取一系列 float 值的可重用且更好的方法。我們的選擇。
下面的示例程式碼演示瞭如何使用 yield
關鍵字建立生成器函式,類似於 Python 中的 range()
函式。
def myrange(start, stop, step):
while start < stop:
yield start
start = start + step
seq = myrange(0.0, 1.0, 0.1)
for x in seq:
print(x)
在 Python 中使用 numpy.linspace()
方法獲取浮點數的範圍
類似於 numpy.arange()
方法的 numpy.linspace()
方法返回從 start
值到 stop
值的序列。numpy.linspace()
方法採用 num
引數,而不是 step
引數,該引數指定要從 start
到 stop
值生成的值的數量。
因此,我們將必須向 numpy.linspace()
方法提供數值的數量 num
。以下面的公式可以用 start
、stop
和 step
的數值計算 num
的值。
num = (stop - start)/step
下面的示例程式碼演示瞭如何使用 numpy.linspace()
來生成從 0
到 1
的浮點範圍,而 step
等於 0.1
。所需序列的 num
值為 (0 - 1)/0.1 = 10
。
seq = np.linspace(0, 1, 10, endpoint=0)
print(seq)
輸出:
array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]
endpoint
引數指定是否包括序列的最後一個值,因為預設情況下序列從 0
開始。