我們有一個數字或字符串列表,我們想對這個列表中的項目進行排序。 基本上,我們可以使用 sort 方法或 sorted 函數來實現我們想要的。
sort 和 sorted 之間的區別在於 sort 是一種修改列表的列表方法,我們不能將 sort 方法與另一個對象(如元組)一起使用,而 sorted 是一個創建新列表的內置函數,而原始函數則沒有不改變。
在本文中,我們將提到如何使用這些函數以升序或降序方式對數字、字符串、元組或任何對象的列表進行排序。
我們還將提及如何定義您自己的自定義排序函數。
1) 對數字列表進行排序
經過 sort
方法,我們可以對數字列表進行排序,無論是整數還是浮點數。
筆記: 該方法在對象之後作為 example 以下
>>> Lst = [20, 25.4, 12, -16, -3.14, 3, -5, 7]
>>> Lst.sort()
>>> Lst
[-16, -5, -3.14, 3, 7, 12, 20, 25.4]
正如你看到的對象的順序 Lst
已經變了。
但是如果我們想保留原列表而不改變並將新順序分配給新列表,我們將使用 sorted
功能如下。
>>> Lst = [20, 25.4, 12, -16, -3.14, 3, -5, 7]
>>> Sorted_Lst = sorted(Lst)
>>> Sorted_Lst
[-16, -5, -3.14, 3, 7, 12, 20, 25.4]
如果我們想按降序對列表進行排序,我們將使用關鍵字 reverse
並分配給它 True
如下。
>>> Lst = [20, 25.4, 12, -16, -3.14, 3, -5, 7]
>>> Sorted_Lst = sorted(Lst, reverse = True)
>>> Sorted_Lst
[25.4, 20, 12, 7, 3, -3.14, -5, -16]
2) 對字符串列表進行排序
我們將使用 sort
或者 sorted
用於排序字符串
>>> Lst = ['bmw','ford','audi','toyota']
>>> Lst.sort()
>>> Lst
['audi', 'bmw', 'ford', 'toyota']
此外,我們仍然使用 reverse
關鍵字以降序排序。
>>> Lst = ['bmw','ford','audi','toyota']
>>> Lst.sort(reverse=True)
>>> Lst
['toyota', 'ford', 'bmw', 'audi']
筆記: Python在小寫字母之前處理所有大寫字母
我們將在 example 以下。
>>> Lst = ['bmw','ford','audi','Toyota']
>>> Lst.sort()
>>> Lst
['Toyota', 'audi', 'bmw', 'ford']
但是我們可以使用關鍵字以不區分大小寫的方式對字符串列表進行排序 key=str.lower
為了 sort
方法如下。
>>> Lst = ['bmw','ford','audi','Toyota']
>>> Lst.sort(key=str.lower)
>>> Lst
['audi', 'bmw', 'ford', 'Toyota']
3) 對元組列表進行排序
我們應該知道當列表是可變對象時元組是不可變對象,同樣當我們對兩個元組進行排序時,我們從比較元組的第一個元素開始,如果它們不相等,這就是比較的結果。
>>> (5, 7) >> (5, 7) > (5, 9)
False
當然我們可以使用 sort
方法或 sorted
用於排序元組的函數如下。
>>> sorted([(5, 4), (3, 3), (3, 10)])
[(3, 3), (3, 10), (5, 4)]
>>> sorted([('watermelon', 'green'), ('apple', ''), ('banana', '')])
[('apple', ''), ('banana', ''), ('watermelon', 'green')]
筆記: 我們可以按第二個元素對元組進行排序
我們將使用 lambda
定義我們自己的關鍵功能如下。
>>> Lst = [("Amanda", 35), ("John", 30), ("Monica", 25)]
>>> Lst.sort(key=lambda x: x[1])
>>> print(Lst)
[('Monica', 25), ('John', 30), ('Amanda', 35)]
4)對對象列表進行排序
對像是 Python 的數據類型類型,要對這種類型的數據類型進行排序,我們應該將這些對象放入如下列表中。
假設我們有一個 Student
類具有名稱和年齡方法,如下所示:-
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
現在我們將創建一些 Student
對象並將它們添加到列表中以對它們進行排序。
>>> John = Student('John', 30)
>>> Amanda = Student('Amanda', 35)
>>> Monica = Student('Monica', 25)
>>> Lst = [John, Amanda, Monica]
如果我們對列表進行排序 name
方法。
>>> Lst.sort(key=lambda x: x.name)
>>> print([item.name for item in Lst])
['Amanda', 'John', 'Monica']
如果我們對列表進行排序 age
方法。
>>> Lst.sort(key=lambda x: x.age)
>>> print([item.name for item in Lst])
['Monica', 'John', 'Amanda']
Python 有很多內置的函數和方法可以幫助我們解決問題,sort
和 sorted
用於對數字、字符串、元組和對象的任何列表進行排序。
另請閱讀:
- 如何在示例中使用 Python raw_input 函數
- 如何在 Ubuntu 18.04 上設置 Python 虛擬環境