查找列表中大于给定值的最小元素

Pyt*_*101 1 python math

我正在编写一个函数,该函数返回大于列表中某个值的数字的最小值。例如,如果给定值为 [1,2,3,4,5] 中的 3,则它应该返回 4。但是,我的所有尝试都不起作用。

我使用了“min”函数,并尝试了 while 和 for 循环来解决问题。

def smallest_greater(seq, value):
    i = 0
    while i < len(seq):
        if seq[i] > value:
            i = i + 1
    return min(seq[i])

def smallest_greater(seq, value):
    i = 0
    for value in seq:
        if seq[i] > value:
            i = i + 1
    return min(seq[i])
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用 while 循环运行代码,它不会执行该代码。如果我使用 for 循环运行代码,它会给出“TypeError: 'int' object is not iterable”

Chr*_*ris 6

你的while循环将无限循环,除非每个数字都seq大于value(这就是正在发生的事情,因为i永远不会超过len(seq)

此外,递增i是对大于 value 的数字进行计数,而不是精确给出最小的较大值的索引。

您可以使用列表理解在一行中完成此操作:

min(i for i in [1,2,3,4,5] if i > 3)
Run Code Online (Sandbox Code Playgroud)

输出:

4
Run Code Online (Sandbox Code Playgroud)