Python内置函数可以生成100个0到1之间的数字吗?
我想找一个类似于 range
的东西,但这个东西可以让我指定开始和结束的数值,还有我需要在这个集合中有多少个数字。我希望它能像 range
在 for 循环
中那样使用。
4 个回答
2
在numpy这个库里,有一个特别的功能可以做到这一点,叫做 linspace
。当然,你得先安装numpy。想了解更多信息,可以在 这里 找到。
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(),这些都是现成的功能。
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
补充:如果你想要结果中包含 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