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