例如,

l = [1, -9, 2, 5, 9, 16, 11, 0, 21]


如果范围是10(10表示大于10的任何数字都不会被视为最大值),我希望代码返回9。

最佳答案

您可以先删除所有太大的元素,然后找到最大值:

filtered = filter(lambda x: x <= limit, list)
val = max(filtered, default = None) # the `default` part means that that's returned if there are no elements


filtered是一个filter对象,其中包含所有小于或等于限制的元素。 val是最大值。

或者,

filtered = [x for x in list if x <= limit]
val = max(filtered, default = None)


filtered当且仅当它们小于限制时,才包含列表中的所有元素。 valfiltered的最大值。

或者,

val = max((x for x in list if x <= limit), default = None)


这通过使用参数理解将上述方法的两个步骤组合在一起。

或者,

val = max(filter(limit.__ge__, list), default = None)


limit.__ge__是表示x => limit >= x的函数(ge表示大于等于)。这是最短且最不易读的编写方式。

也请重命名list

list是全局变量(Python中的list类型)。请不要覆盖全局变量; _;

关于python - 有没有办法找到一个范围之间的最大值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46919861/

10-14 19:10