列表中的最大数字,无论正数和负数的符号如何

use*_*711 1 python algorithm list time-complexity minmax

我想从一个包含正数、负数且不考虑符号的列表中找到最大数字。例如:

arr = [2,3,-6,5]
## output: -6

arr = [2,3,6,-5]
## output: 6
Run Code Online (Sandbox Code Playgroud)

我有以下正在运行的代码:

def max_number(l):
    abs_maxval = max(l,key=abs)
    maxval = max(l)
    minval = min(l)
    if maxval == abs_maxval:
        return maxval
    else:
        return minval
Run Code Online (Sandbox Code Playgroud)

虽然这是有效的并且时间复杂度是O(N),但我想知道是否有办法更快地找到数字或优化代码?据我了解,我正在扫描列表 3 次,这对于大型列表来说可能会更慢,而对于我的问题,我正在浏览数十万个大型列表。任何建议都会有帮助。谢谢!

cmd*_*cmd 5

你应该能够

max(arr, key=abs)
Run Code Online (Sandbox Code Playgroud)