Python内置函数可以生成100个0到1之间的数字吗?

0 投票
4 回答
896 浏览
提问于 2025-04-17 09:07

我想找一个类似于 range 的东西,但这个东西可以让我指定开始和结束的数值,还有我需要在这个集合中有多少个数字。我希望它能像 rangefor 循环 中那样使用。

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

补充:如果你想要结果中包含 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

撰写回答