根据值的范围选择值

时间:2013-07-11 03:12:29

标签: python

我有一个问题,我不知道如何解决。我有一个朱利安日数(整数)和一个距离值(浮点数),我有另一个数字,实际上是朱利安日(整数)。我想采取实际的朱利安日并将其纳入朱利安日范围(即朱利安日1-14),以便我可以确定特定朱利安日的距离值。因此,我的朱利安第10天,适合朱利安日范围或1 - 14,使距离= 0.9832。任何有关这方面的帮助将不胜感激。到目前为止我所尝试的只是使用if else,但我认为这根本不会起作用。欢迎您的想法。 (如果我不清楚我想做什么,请告诉我!)

朱利安日               距离 1                0.9832 15                0.9836 32                0.9878 46                0.9878 60               99.0900

2 个答案:

答案 0 :(得分:1)

假设您期望在多个查找中获得良好的性能,那么您可以使用binary search algorithm来实现您的目标。

事实上,只搜索“二分搜索”找到了a similar question

如果性能不是问题,那么通过日间距离的简单循环将起作用。

无论哪种方式,我都会将日间距离放入顺序数据结构中:

day_distances = [( 1,  0.9832),
                 (15,  0.9836),
                 (32,  0.9878),
                 (46,  0.9878),
                 (60, 99.0900),
                ]

现在,如果它是一个我正在使用的简单循环(我根本不关心效率低下),它看起来像是:

find_day = 10
found_distance = None

for day, distance in reversed(sorted(day_distances)):
    if day <= find_day:
        found_distance = distance
        break

答案 1 :(得分:0)

“如果”肯定有效。例如,

actual_day = 10
if a >=1 and a<=14:
    distance =  0.9832
elif a>=15 and a<=31:
    distance =  0.9836
....

如果朱利安日数(整数)严格增加,如1,15,32,46等,从最大到最小使用“if”会更容易:

actual_day = 10
if a >= 60:
    distance = 99.0900
elif a >= 46:
    distance = 0.9878
....