Как получить больший контроль над приращениями цикла в Python? - PullRequest
21 голосов
/ 08 февраля 2011

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

Ответы [ 7 ]

25 голосов
/ 08 февраля 2011
for i in [float(j) / 100 for j in range(0, 100, 1)]:
    print i
4 голосов
/ 08 февраля 2011

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

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
1 голос
/ 08 февраля 2011

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

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

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

for i in drange(0, 1, 0.01):
    print i
0 голосов
/ 29 января 2019

Я бы сказал, что лучший способ - использовать массив 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])

0 голосов
/ 31 октября 2016

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

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)])
0 голосов
/ 31 марта 2013

ваш код

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

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

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

, если вы очень заинтересованы в float, тогда вы можете перейти с https://stackoverflow.com/a/4935466/2225357

0 голосов
/ 08 февраля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...