目錄
Python list 使用比較函數排序
Python 是一種非常流行的程式語言,它的 list 是一種常用的資料結構,它可以讓我們快速的存取資料。有時候我們會需要對 list 內的資料進行排序,Python 提供了一個非常方便的比較函數來處理這個問題。
比較函數是一個可以接受兩個參數,並且回傳一個數字的函數,它會比較兩個參數的大小,如果第一個參數大於第二個參數,則回傳正數;如果第一個參數小於第二個參數,則回傳負數;如果兩個參數相等,則回傳 0。
我們可以使用 sorted() 函數來對 list 進行排序,它可以接受一個比較函數作為參數,如果沒有指定比較函數,則預設會使用 cmp() 函數,來比較兩個參數的大小。
def cmp(a, b): if a > b: return 1 elif a < b: return -1 else: return 0 my_list = [3, 5, 2, 1, 4] sorted_list = sorted(my_list, cmp) print(sorted_list) # [1, 2, 3, 4, 5]
上面的程式碼中,我們定義了一個比較函數 cmp(),然後使用 sorted() 函數對 list 進行排序,排序後的結果就會存放在 sorted_list 中。
另外,Python 也提供了一個 key 參數,它可以接受一個函數,用來指定排序時比較的欄位,這樣就可以對 list 中的物件進行排序。
def get_name(obj): return obj.name class Person: def __init__(self, name): self.name = name persons = [ Person('Bob'), Person('Alice'), Person('John') ] sorted_persons = sorted(persons, key=get_name) for person in sorted_persons: print(person.name) # Alice # Bob # John
上面的程式碼中,我們定義了一個 Person 類別,然後建立了一個 persons 的 list,接著我們定義了一個 get_name() 函數,用來取得 Person 物件的 name 屬性,最後使用 sorted() 函數對 persons 進行排序,排序時使用 key 參數指定 get_name() 函數,排序後的結果就會存放在 sorted_persons 中。
總結來說,Python 提供了一個非常方便的比較函數來處理 list 的排序問題,使用者可以自行定義比較函數,或是使用 key 參數來指定排序時比較的欄位,讓排序的工作變得更加簡單。