2014-09-12 79 views
1

我想查找最接近我的號碼但是比他大的號碼的號碼。找到比定義的參數號碼大的最小號碼

例如:

num = 20 
li = [19,23,24,1,2] 

我想23

我試着這樣做:

hour = min(dfHour, key=lambda x:(x-localtime[3])>0) 

,但它僅返回最接近的,即使它是不是我的大號碼

另一個問題是,如果我在列表中有另外23個,我怎麼能返回他們兩個(他們指標是很不夠好)

+1

你有沒有試圖解決這個問題? – 2014-09-12 16:44:02

回答

2

您還可以使用過濾器:

print min(filter(lambda x: x > num,li)) 
23 

如果有重複的值:

num = 20 
li = [19,23,24,23,1,2] 
li_sort = sorted(x for x in li if x > num) 
print [x for x in li_sort if x == li_sort[0]] 
2

這裏是一個解決方案:

num = 20 

li = [19,23,24,1,2] 
higher = [] 

for number in li: 
    if number > num: 
     higher.append(number) 

if higher: 
    lowest = sorted(higher)[0] 

print(lowest) 

你可以輕鬆轉換爲功能:

def closest(num, li): 
    higher = [] 

    for number in li: 
     if number > num: 
      higher.append(number) 

    if higher: 
     lowest = sorted(higher)[0] 

     return lowest 
    else: 
     return "Error"