Python中按字母順序對列表排序

banq發表於2024-05-10

在本 Python 教程中,您將瞭解Python使用不同方法按字母順序對列表進行排序。

在員工管理應用程式中,我必須實現按字母順序對使用者進行排序的功能,因此我在列表上使用了sort()方法。

因此,在本教程中,我解釋瞭如何按字母順序對包含字串的列表進行排序,以及另外兩種可用於按字母順序對列表進行排序的方法。

Python 按字母順序對列表進行排序
Python 有多種方法,例如sorted()、sort()和自定義函式,用於按字母順序對列表進行排序。

1、如何在Python中使用sorted()方法按字母順序對列表進行排序
Python 中的sorted()方法允許您按升序和降序對可迭代物件進行排序。可迭代物件可以是元組、列表字典等。

但在這裡,您將使用可迭代物件(如列表)按字母順序對列表項進行排序。

語法如下。

  • sort(iterable_object, reverse)
  • sort():對給定的可迭代物件進行排序的函式。
  • iterable_object:它是要排序的專案的集合,例如列表。相反:它是一個布林值,可以是False或True。如果指定為 false,則按升序對專案進行排序;如果指定 true,則按降序對專案進行排序。但預設情況下,它設定為 False。

例如,假設您有一個使用者列表,如下所示。

users = [<font>"Roy", "Vincent", "Bobby", "Philip", "Eugene"]


正如您所看到的,使用者名稱沒有任何特定的順序,因此您需要按字母順序對它們進行排序。為此,您可以使用排序()函式,如下所示。

sorted_users = sorted(users)

print(sorted_users)

從輸出中,您可以看到使用者名稱按升序排序,這意味著第一個使用者名稱以字母 B 開頭,第二個使用者名稱以字母 E 開頭,依此類推。

你必須知道sorted()函式對原始列表進行排序而不改變它;相反,它建立原始列表的副本,然後對該列表進行排序。

2、Python 使用 sort() 方法按字母順序對字串列表進行排序
您剛剛學習瞭如何使用Sorted()方法按字母順序對列表進行排序,但是 Python 還有一種名為sort() 的方法,您可以在列表上呼叫該方法以按字母順序對列表中的專案進行排序。

例如,獲取您在上一節中建立的相同使用者列表,並對其呼叫 sort() 方法。

users = [<font>"Roy", "Vincent", "Bobby", "Philip", "Eugene"]
users.sort()
print(users)

從輸出中,您可以看到列表“users”按字母順序排序為[“Bobby”、“Eugene”、“Philip”、“Roy”、“Vincent”]。但在這裡我想告訴你,sort()函式對原始列表進行排序,它不會像sorted()函式那樣建立列表的副本。

但是, sort()方法存在一個問題,如果列表同時包含大寫和小寫字串(使用者名稱),則該方法無法按字母順序對列表進行排序。

例如,看看下面的程式碼。

users = [<font>"roy", "Vincent", "Bobby", "philip", "Eugene"]

users.sort()

print(users)

從輸出中可以看到,名稱以大寫字母開頭的使用者的優先順序高於名稱以小寫字母開頭的使用者。

然而,在這裡,列表應該按字母順序排序,這意味著 Vincent 應該是姓氏,但它是第三個名字。

簡而言之,通常,當您使用 sort() 方法按字母順序對單詞或短語進行排序時,任何大寫(大寫)字母都會出現在小寫字母之前。發生這種情況的原因在於計算機使用的 ASCII 系統中字元程式碼的排序方式。

為此,有一個解決方案:解決方案是將所有名稱轉換為小寫,然後按字母順序對它們進行排序,但是如何應用該函式,因為 sort() 方法還接受一個名為key的引數。

這個關鍵引數值必須是一個函式,因此我們將使用 lower() 函式來降低列表中的名稱。看下面的程式碼。

users = [<font>"roy", "Vincent", "Bobby", "philip", "Eugene"]

users.sort(key=str.lower)

print(users)

從輸出中,您現在可以看到使用者的姓名按字母順序排序,無論大小寫。

因此,在這部分程式碼中,users.sort(key=str.lower)按字母順序對使用者名稱進行排序,但它使用key=str.lower將函式 lower() 應用於列表的每個專案,以確保該使用者名稱已按應有的順序正確排序。

這是如何使用 Python 的 sort() 函式按字母順序對列表進行排序。

3、如何在Python中不使用Sort函式按字母順序對列表進行排序
到目前為止,您已經使用了像sorted()和sort()這樣的函式來按字母順序對列表進行排序,但是您也可以不使用排序函式來按字母順序對列表進行排序。為此,您需要建立一個自定義函式。

建立自定義排序函式意味著編寫按字母順序排列列表的分步說明,而無需使用 Python 中存在的任何內建方法。

該函式使用簡單的氣泡排序演算法,該演算法在 Python 中重複遍歷列表,比較相鄰元素,如果順序錯誤則交換它們。重複遍歷 Python 列表,直到列表排序完畢。

例如,看看下面的程式碼。

def custom_sort(list_to_sort):
    n = len(list_to_sort)
    for i in range(n):
        for j in range(0, n-i-1):
            if list_to_sort[j] > list_to_sort[j+1]:
                list_to_sort[j], list_to_sort[j+1] = list_to_sort[j+1], list_to_sort[j]

us_rivers = ['Mississippi River', 'Missouri River', 'Yukon River', 'Rio Grande', 'Colorado River']
custom_sort(us_rivers)
print('Sorted names of the river alphabetically:\n', us_rivers)

從輸出中,您可以看到custom_sort()函式獲取列表並透過應用氣泡排序概念按字母順序對其進行排序。

透過上面的示例,我希望您瞭解如何按字母順序對列表進行排序。

結論
在本 Python 教程中,您瞭解了使用 Sorted() 和 sort() 以及建立自定義函式按字母順序排列 Python 列表。

相關文章