【发布时间】:2014-11-22 10:46:57
【问题描述】:
python中有没有用于浮点数的range()函数 例如
a=0.6
if a in range(0,1):
a=3
我该如何实现?
【问题讨论】:
-
为什么不直接使用
if 0 <= a < 1: a = 3?
python中有没有用于浮点数的range()函数 例如
a=0.6
if a in range(0,1):
a=3
我该如何实现?
【问题讨论】:
if 0 <= a < 1: a = 3?
如果我没看错,你想测试一个数字是否在另外两个数字之间,所以使用:
a = 0.6
if 0 <= a < 1: # change to `<= 1` to be inclusive
a = 3
您不需要生成范围并进行成员资格测试 - 除非您有一组离散值,您的 a 应该匹配 - Python 3.x 中的内置 range 可以对 @987654324 进行有效查找@s 因为它可以优化成员资格测试。如果你在一个很大的范围内有大量的离散值,那么你最好还是用数学方法来做。
【讨论】:
与 Begueradj 链接的问题类似,但略有不同(注意,浮点数与小数不同):
import decimal
def drange(start, stop, step=decimal.Decimal('1')):
while start < stop:
yield start
start += step
print(list(drange(
decimal.Decimal('1.25'),
decimal.Decimal('2.34'),
decimal.Decimal('0.1'),
)))
输出:
[Decimal('1.25'), Decimal('1.35'), Decimal('1.45'), Decimal('1.55'),
Decimal('1.65'), Decimal('1.75'), Decimal('1.85'), Decimal('1.95'),
Decimal('2.05'), Decimal('2.15'), Decimal('2.25')]
【讨论】:
drange(10, 0, -1)。
假设你已经安装了 numpy:
>>>import numpy
>>>print np.arange(0,1,0.1)数组([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])
如果你没有安装 Numpy,一定要去买它。
【讨论】:
如果您要检查 a 是否在两个数字之间,最好使用:
0 <=a<=1
否则,如果您确实需要 0.1 跳跃中的 0 到 1 列表,您可以使用以下代码生成它:
lst = map(lambda x: x/10.0, range(11))
【讨论】: