1. 程式人生 > >python之自定義排序函數sorted()

python之自定義排序函數sorted()

col pytho 程序 定義排序 pre 兩個 cti tools ted

sorted()也是一個高階函數,它可以接收一個比較函數來實現自定義排序比較函數的定義是,傳入兩個待比較的元素 x, y,如果 x 應該排在 y 的前面,返回 -1,如果 x 應該排在 y 的後面,返回 1。如果 x 和 y 相等,返回 0

def custom_sort(x,y):
    if x>y:
        return -1
    if x<y:
        return 1
    return 0

print sorted([2,4,5,7,3],custom_sort)  

在python3以後,sort方法和sorted函數中的cmp參數被取消,此時如果還需要使用自定義的比較函數,那麽可以使用cmp_to_key

函數。將老式的比較函數(comparison function)轉化為關鍵字函數(key function)。與接受key function的工具一同使用(如 sorted(), min(), max(), heapq.nlargest(), itertools.groupby())。該函數主要用來將程序轉成 Python 3 格式的,因為 Python 3 中不支持比較函數。

def custom_sorted(x,y):
    if x>y:
        return -1
    if x<y:
        return 1
    return 0

print(sorted([2,3,1,5,4],key=cmp_to_key(custom_sorted)))

python之自定義排序函數sorted()