是否有内置的Python函数来生成从0到1的100个数字?

时间:2011-12-28 04:53:49

标签: python math loops range sequence

我正在寻找像range这样的东西,但是我可以指定一个开始和结束值,以及我想以类似方式使用的集合中需要多少个数字{ {1}}中使用了{1}}。

4 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:3)

不,没有内置功能可以做你想要的。但是,您始终可以定义自己的range

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

您可以像使用range一样使用for循环:

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

编辑:如果您希望startend都成为结果的一部分,那么您的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 :(得分:2)

你知道,你仍然可以使用range。你只需要开始大,然后划分:

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

如果要包含端点:

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

答案 3 :(得分:2)

numpy中有一个特殊功能:linspace。当然,你必须首先安装numpy。您可以找到有关它的更多信息here

相关问题