如何在Python中更好地控制循环增量?

时间:2011-02-08 05:07:20

标签: python syntax

我正尝试使用步长0.01(例如)从0循环到1。我该怎么做呢? for i in range(start, stop, step)只接受整数参数,因此浮点数不起作用。

7 个答案:

答案 0 :(得分:23)

for i in [float(j) / 100 for j in range(0, 100, 1)]:
    print i

答案 1 :(得分:4)

避免使用此方法复合浮点错误。步数是预期的,而每个步骤的计算值。

def drange2(start, stop, step):
    numelements = int((stop-start)/float(step))
    for i in range(numelements+1):
            yield start + i*step
Usage:

for i in drange2(0, 1, 0.01):
    print i

答案 2 :(得分:1)

一个选项:

def drange(start, stop, step):
    while start < stop:
            yield start
            start += step

用法:

for i in drange(0, 1, 0.01):
    print i

答案 3 :(得分:0)

好吧,你可以让你的循环从0到100,步长为1,这将给你相同的步数。然后你可以将i除以100,无论你将要做什么。

答案 4 :(得分:0)

您可以使用列表推导:

print([i for i in [float(j) / 100 for j in range(0, 100, 1)]])

如果你想控制打印,那么就这样做:

print(['something {} something'.format(i) for i in [float(j) / 100 for j in range(0, 100, 1)]])

list(i for i in [float(j) / 100 for j in range(0, 100, 1)])

答案 5 :(得分:0)

我会说最好的方法是使用numpy数组。

如果您想以0.25为增量从-2到+2循环播放,那么这就是我的方法:

Start = -2
End = 2
Increment = 0.25
Array =  np.arange(Start, End, Increment)

for i in range(0, Array.size):
    print (Array[i])

答案 6 :(得分:-1)

你的代码

for i in range(0,100,0.01):

可以用非常简单的方式实现,而不是使用float

for i in range(0,10000,1):

如果你非常关心浮动那么你可以去 https://stackoverflow.com/a/4935466/2225357