Я пытаюсь выполнить цикл от 0 до 1, используя размеры шагов 0,01 (например). Как мне это сделать? for i in range(start, stop, step)
принимает только целые аргументы, поэтому поплавки не будут работать.
Как получить больше контроля над циклами в Python?
Ответ 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/...