Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 测试python浮点范围大小_Python 3.x - Fatal编程技术网

Python 3.x 测试python浮点范围大小

Python 3.x 测试python浮点范围大小,python-3.x,Python 3.x,嘿,你在这儿!我希望这是一个简单的问题,我想看看是否有更简单的方法来解决这个问题。所以我有一个,我有一个数据结构,我有一系列的数值范围。这些范围是传感器之间的关系值。这里有一个例子 data1 = { 'sensor01': {'bucket': [1, 4], 'offline_count': 103}, 'sensor04': {'bucket': [1.19, 2.24], 'offline_count': 32}, 'sensor05': {'bucket': [

嘿,你在这儿!我希望这是一个简单的问题,我想看看是否有更简单的方法来解决这个问题。所以我有一个,我有一个数据结构,我有一系列的数值范围。这些范围是传感器之间的关系值。这里有一个例子

data1 = {
    'sensor01': {'bucket': [1, 4], 'offline_count': 103},
    'sensor04': {'bucket': [1.19, 2.24], 'offline_count': 32},
    'sensor05': {'bucket': [3.19, 4.24], 'offline_count': 32},
    'sensor06': {'bucket': [-1.16, 4.25], 'offline_count': 161},
    'sensor07': {'bucket': [2.494331, 9.320493], 'offline_count': 203},
}

data2 = {
    'sensor01': {'bucket': [3, 5], 'offline_count': 103},
    'sensor04': {'bucket': [0.19, 1.25], 'offline_count': 32},
    'sensor05': {'bucket': [4.19, 5.24], 'offline_count': 32},
    'sensor06': {'bucket': [-2.16, 0.25], 'offline_count': 161},
    'sensor07': {'bucket': [12.272427, 18.69733], 'offline_count': 203},
}
传感器的值是或可以简单地表示为具有不同精度级别的浮点数。我的问题是,我需要测试这些范围,以确定任何给定时间点的最小可能范围。在Python中,这或多或少是以一种非常低效的方式实现的:

for k, v in data1.items():
    d1_range = range(int(data1[k]['bucket'][0] * 1000), int(data1[k]['bucket'][1]) * 1000)
    d2_range = range(int(data2[k]['bucket'][0] * 1000), int(data2[k]['bucket'][0]) * 1000)
    if len(d1_range) < len(d2_range):
        print("data1 range smaller")
    else:
        print("data2 range smaller")
数据1.items()中k,v的
:
d1_range=range(int(数据1[k]['bucket'][0]*1000),int(数据1[k]['bucket'][1])*1000)
d2_range=range(int(数据2[k]['bucket'][0]*1000),int(数据2[k]['bucket'][0])*1000)
如果len(d1_范围)
虽然这是可行的,但我想知道是否有更有效的方法来做到这一点。看起来将浮点数相乘并在范围对象上使用len似乎需要大量处理


谢谢

使用最大值和最小值之差的绝对值来获得范围:

for k,v in data1.items():
  b1 = data1[k]['bucket']
  b2 = data2[k]['bucket']
  d1 = abs(b1[1] - b1[0])
  d2 = abs(b2[1] - b2[0])
  if d1 < d2:
    print("data1 range smaller")
  else:
    print("data2 range smaller")
数据1.items()中k,v的
:
b1=data1[k]['bucket']
b2=data2[k]['bucket']
d1=abs(b1[1]-b1[0])
d2=abs(b2[1]-b2[0])
如果d1
我认为您可以省略range(),只需使用衍射或差的绝对值即可获得距离。此外,您还可以将列表中的两个压缩到一起以便于访问+为示例代码中的重复代码编写单独的查找。挑剔:您没有在生成器上使用
len
。您正在
范围
对象上使用它。这是非常有效的,省去了简单的算术。从技术上讲,range是一个生成器,但它不是一个生成器表达式。但我想我看到了len()的要点可能是调用range对象上的_len__;()。。。我想这就是为什么英语不适合更简单的编程语言,谢谢!我觉得我只是错过了一些简单的事情。。。