在具有给定步长值的两个数字范围之间打印



我是循环的新手,我正在尝试迭代列表中的所有项,我需要使用给定的步长值生成0到2之间的值。我曾尝试使用";范围";函数,但无法使其工作。

最终结果应该是这样的(不必在pandas数据帧中,只是为了说明目的(:

import pandas as pd
import numpy as np
data = {'range_0.5' : [0,0.5,1,1.5,2, np.nan, np.nan, np.nan, np.nan],
'range_0.25' : [0,0.25,0.5,0.75,1,1.25,1.5,1.75,2]}
df = pd.DataFrame(data)
df

以下是我尝试过的:

import numpy
x = []
seq = [0.5, 0.25, 0.125, 0.0625, 0.03125, 0.015625, 0.0078125, 0.00390625]
for i in seq:
x = range(0, 2, i)

引发以下错误:

TypeError                                 Traceback (most recent call last)
Input In [10], in <cell line: 1>()
1 for i in seq:
----> 2     x = range(0, 2, i)
TypeError: 'float' object cannot be interpreted as an integer

如何正确创建循环?

np.arange((

可以使用支持浮点值的numpy.arange()作为步长值。

import numpy as np
for step in [0.5, 0.25]:
print([i for i in np.arange(0, 2, step))

预期输出:

[0.0, 0.5, 1.0, 1.5]
[0.0, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75]

要包含2,只需再次添加步长值:

for step in [0.5, 0.25]:
print([i for i in np.arange(0, 2 + step, step)])

预期输出:

[0.0, 0.5, 1.0, 1.5, 2.0]
[0.0, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0]

np.linspace((

或者,您可以使用np.linspace():这具有包括使用endpoint=True的端点的能力;

for step in [0.5, 0.25]:
print([i for i in np.linspace(0, 2, int(2 // step) + 1, endpoint=True)])

预期输出:

[0.0, 0.5, 1.0, 1.5, 2.0]
[0.0, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0]

相关内容

最新更新