在python中找到小于指定值的max(list)

时间:2016-11-11 12:16:52

标签: python list max

x = [2,4,34,35,36,37]

如果transmax = 36,则o / p = 36 如果transmax = 10则o / p = 4(因为这是边界10内的最大值。

我已经返回以下功能,但有时会超时...还有其他最佳方法吗?

def rangemaxhouse(transmax):
    return(max(i for i in x if i<= transmax))

1 个答案:

答案 0 :(得分:1)

这是规范的做法。从理论上讲,如果你使用filter和C中实现的内置函数,它可能会稍微快一点,但不会太多:

from future_builtins import filter  # Only on Py2, for generator based filter

def rangemaxhouse(transmax):
    return max(filter(transmax.__ge__, x))

在这种情况下,在3.5.2的本地测试中,它仍然运行较慢,没有扩展优势;生成器表达式严格更快(有一个原因mapfilter通常是不鼓励的;他们获胜的时间是有限的,不是特别可预测的。)