Есть ли встроенная функция Python для генерации 100 чисел от 0 до 1? - PullRequest
0 голосов
/ 28 декабря 2011

Я ищу что-то вроде range, но которое позволит мне указать начальное и конечное значение, а также количество нужных мне чисел в коллекции, которые я хочу использовать аналогичным образом range используется в for loops.

Ответы [ 4 ]

7 голосов
/ 28 декабря 2011

Python не имеет функции диапазона с плавающей запятой, но вы можете легко смоделировать ее с помощью понимания списка:

>>> lo = 2.0
>>> hi = 12.0
>>> n = 20
>>> [(hi - lo) / n * i + lo for i in range(n)]
[2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5, 10.0, 10.5, 11.0, 11.5]

Обратите внимание, что в числовых приложениях люди обычно хотят включать обе конечные точки, а не иметьполуоткрытый интервал, такой как встроенная в Python функция range () .Если вам нужны обе конечные точки, вы можете легко добавить это, изменив range(n) на range(n+1).

Также рассмотрите возможность использования numpy , в котором есть такие инструменты, как arange() и linspace () уже встроено.

3 голосов
/ 28 декабря 2011

Нет, нет встроенной функции, чтобы делать то, что вы хотите.Но вы всегда можете определить свои собственные range:

def my_range(start, end, how_many):
    incr = float(end - start)/how_many
    return [start + i*incr for i in range(how_many)]

И вы можете использовать цикл for таким же образом, как если бы вы использовали range:

>>> for i in my_range(0, 1, 10):
...     print i
... 
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9

EDIT: Если вы хотите, чтобы start и end были частью результата, ваша my_range функция будет иметь вид:

def my_range(start, end, how_many):
    incr = float(end - start)/(how_many - 1)
    return [start + i*incr for i in range(how_many-1)] + [end]

И в вашем цикле for

>>> for i in my_range(0, 1, 10):
...   print i
... 
0.0
0.111111111111
0.222222222222
0.333333333333
0.444444444444
0.555555555556
0.666666666667
0.777777777778
0.888888888889
1
2 голосов
/ 28 декабря 2011

Для этого в numpy есть специальная функция: linspace. Конечно, вам придется сначала установить NumPy. Вы можете найти больше об этом здесь .

2 голосов
/ 28 декабря 2011

Вы все еще можете использовать range, вы знаете.Вам просто нужно начать с большого, а затем разделить:

for x in range(100):
    print x/100.0

Если вы хотите включить конечную точку:

for x in range(101):
    print x/100.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...