我想在列表中找到最接近我号码的号码,但比他大。
例如:
num = 20
li = [19,23,24,1,2]
我想要23岁。
我试过这样做:
hour = min(dfHour, key=lambda x:(x-localtime[3])>0)
但即使它不是我的号码
,它也会返回最近的另一个问题是如果我在列表中还有另外23个,我怎么能将它们都返回(它们的索引非常好)
答案 0 :(得分:3)
您也可以使用过滤器:
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]]
答案 1 :(得分: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"