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
开始。