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))
答案 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的本地测试中,它仍然运行较慢,没有扩展优势;生成器表达式严格更快(有一个原因map
和filter
通常是不鼓励的;他们获胜的时间是有限的,不是特别可预测的。)