2014-09-12 83 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"