使用PythonList排序:學習比較函數的基本操作

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 參數來指定排序時比較的欄位,讓排序的工作變得更加簡單。

發佈留言