找到大于定义的参数编号的最小数字

时间:2014-09-12 16:43:28

标签: python

我想在列表中找到最接近我号码的号码,但比他大。

例如:

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

我想要23岁。

我试过这样做:

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

但即使它不是我的号码

,它也会返回最近的

另一个问题是如果我在列表中还有另外23个,我怎么能将它们都返回(它们的索引非常好)

2 个答案:

答案 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"