一千萬個為什麽

搜索

找到兩個值的最大值和最小值的最佳方法

我有一個傳遞兩個值的函數,然後叠代這些值的範圍。這些值可以按任何順序傳遞,因此我需要找到哪一個是最低的。我有這樣寫的函數:

def myFunc(x, y):
    if x > y:
        min_val, max_val = y, x
    else:
        min_val, max_val = x, y
    for i in range(min_val, max_val):
    ...

但為了節省一些屏幕空間,我最終將其更改為:

def myFunc(x, y):
   min_val, max_val = sorted([x, y])
   for i in range(min_val, max_val):
   ...

這有多糟糕?有沒有更好的方式仍然是一條線?

最佳答案

min and max are your friends.

def myFunc(x, y):
    min_val, max_val = min(x, y), max(x, y)

Edit. Benchmarked min-max version againt a simple if. Due to the function call overhead, min-max takes 2.5x longer that the simple if; see http://gist.github.com/571049

轉載註明原文: 找到兩個值的最大值和最小值的最佳方法