Python 浮點數的範圍

Muhammad Waiz Khan 2023年1月30日
  1. 在 Python 中使用 numpy.arange() 方法獲取浮點數的範圍
  2. 使用 Python 中的列表推導獲取浮點數的範圍
  3. 在 Python 中使用生成器推導法獲得浮點數的範圍
  4. 使用 Python 中的生成器函式獲取浮點數的範圍
  5. 在 Python 中使用 numpy.linspace() 方法獲取浮點數的範圍
Python 浮點數的範圍

在本教程中,我們將研究各種方法來獲取 Python 中的浮點數序列。假設我們需要一系列步長為 0.1 的數字,但是問題是 range() 函式不接受浮點數作為輸入,而是返回 TypeError

我們可以使用以下說明的方法在 Python 中生成具有統一步長的浮點數序列。

在 Python 中使用 numpy.arange() 方法獲取浮點數的範圍

numpy.arange(start, stop, step) 方法返回 startstop 值內的一系列值,步長等於 step 值。startstep 引數的預設值分別為 0 和 1。

使用 numpy.arange() 方法的優點是它可以生成浮點數的範圍。但這不是 Python 的預設函式,需要 NumPy 庫才能使用它。

下面的示例程式碼演示瞭如何使用 numpy.arange() 方法來獲取步長等於 0.1 的從 01 的值序列。

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 函式是一種使用 startstopstep 值獲取一系列 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 引數,該引數指定要從 startstop 值生成的值的數量。

因此,我們將必須向 numpy.linspace() 方法提供數值的數量 num。以下面的公式可以用 startstopstep 的數值計算 num 的值。

num = (stop - start)/step

下面的示例程式碼演示瞭如何使用 numpy.linspace() 來生成從 01 的浮點範圍,而 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 開始。

相關文章 - Python Float