Как получить больше контроля над циклами в Python?

Я пытаюсь выполнить цикл от 0 до 1, используя размеры шагов 0,01 (например). Как мне это сделать? for i in range(start, stop, step) принимает только целые аргументы, поэтому поплавки не будут работать.

Ответы

Ответ 1

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

Ответ 2

Избегайте сочетания ошибок с плавающей запятой при таком подходе. Количество шагов как ожидалось, а значение рассчитывается для каждого шага.

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

Ответ 3

Один вариант:

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

Использование:

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

Ответ 4

Ну, вы можете сделать свой цикл от 0 до 100 с шагом размером 1, который даст вам такое же количество шагов. Затем вы можете разделить я на 100 за все, что вы собираетесь с ним делать.

Ответ 5

вы также можете использовать списки:

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)])

Ответ 6

Я бы сказал, что лучший способ - использовать массив numpy.

Если вы хотите выполнить цикл от -2 до +2 с шагом 0,25, то я бы так и сделал:

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

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

Ответ 7

ваш код

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

может быть достигнуто очень просто, вместо использования float

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

если вы очень обеспокоены поплавком, тогда вы можете пойти с fooobar.com/info/342075/...