Подтвердить что ты не робот

Функция диапазона Python

Скажем, я хочу зациклить от 0 до 100, но с шагом 1/2. Если вы попробуете

for i in range(0, 100, 0.5):
    whatever

Ошибка:

шаг не должен быть 0

Вопрос: Есть ли встроенный способ в Python 2.x, чтобы сделать что-то вроде этого?

4b9b3361

Ответ 1

Python2.x:

for idx in range(0, int(100 / 0.5)):

    print 0.5 * idx      

выходы:

0.0

0.5

1.0

1.5

..

99.0

99.5


Numpy:

numpy.arange тоже справится.

numpy.arange(0, 100, 0.5)

Ответ 2

Если у вас numpy, вот два способа сделать это:

numpy.arange(0, 100, 0.5)

numpy.linspace(0, 100, 200, endpoint=False)

Ответ 3

Вы должны использовать целые шаги для range() и xrange(). Таким образом, ваш 0.5 шаг получает внутренне преобразован в 0, и вы получите эту ошибку. Попробуйте for i in [j / 2.0 for j in xrange(100 * 2)]:

Ответ 4

Вам придется либо создать цикл вручную, либо определить свою собственную функцию диапазона. Для встроенного значения требуется целочисленное значение шага.

Ответ 5

for x in map(lambda i: i * 0.5, range(0,200)):
  #Do something with x

Ответ 6

Для больших диапазонов лучше использовать выражение генератора, чем строгий список:

 for k in ( i*0.5 for i in range(200) ):
     print k

Это потребляет не много дополнительной памяти, быстро и легко читается. См. http://docs.python.org/tutorial/classes.html#generator-expressions