How to get list of the range consisting of floats?
本问题已经有最佳答案,请猛点这里访问。
如何得到由浮点数组成的范围列表?为什么下面的代码不起作用?
1 2 3 | lons = list (range(80.0,90.0,0.05)) print (lons) |
如果您不想编写自己的函数,可以使用takewhile和count(从2.7开始)的组合,例如:
1 2 | from itertools import takewhile, count my_range = list(takewhile(lambda L: L < 90, count(80, 0.05))) |
You can use a generator function:
ZZU1〔3〕
Or using
1 2 3 4 5 | >>> import numpy as np >>> np.arange(80., 90., .5) array([ 80. , 80.5, 81. , 81.5, 82. , 82.5, 83. , 83.5, 84. , 84.5, 85. , 85.5, 86. , 86.5, 87. , 87.5, 88. , 88.5, 89. , 89.5]) |
1 | lons = [80+x*0.05 for x in range(0,200)] |
请注意,您可能最终会遇到许多数字的小舍入"错误"。
从用于
The arguments must be plain integers.
号
我尊敬的人曾经说过:
There's no point in floating point.
号
所以你的问题的实际答案是:你做错了:)
但这并不能算是答案,所以,这里有一个疯狂的功能,可以为你工作。它将所有内容提升为整数,并生成所需的浮点数。
正如您可能从代码中看到的那样,
1 2 3 4 5 6 | def frange(start, stop, step, decpl): exp = 10.0 ** decpl for i in xrange(int(start * exp), int(stop*exp), int(step*exp)): yield i / exp print list(frange(80, 90, 0.1, 1)) |
。
您可以创建自己的范围函数来管理浮动。
def n_range(x, y, jump):
... while x < y: ... yield x ... x += jump ... lons = list (n_range(80.0,90.0,0.05))print (lons)
您需要的功能是:
1 2 3 4 5 | def floatrange(min_val, max_val, step): val=min_val while val < max_val: yield val val += step |
号