天天看點

python sorted函數_在Python中如何使用sorted()函數排序

在某種程度上,所有的程式員都必須編寫代碼對項目或資料進行排序。在應用程式當中,排序對于使用者體驗而言是非常重要的,無論是按時間戳對使用者最近的活動進行排序,還是按照姓氏的字母順序排列電子郵件收件人清單。Python的排序功能十分強大,可以在粒度級别上進行基本排序或自定義排序。

python sorted函數_在Python中如何使用sorted()函數排序

在本教程中,你将會學習如何在不同的資料結構中對各種各樣的資料類型進行排序和自定義排序,并使用Python中兩種不同的排序方法。

在這篇教程結束時,你将會知道如何:

1、在資料結構上完成基本的Python排序

2、區分sorted()和.sort()函數

3、基于特定的要求在編碼中自定義一個複雜的排序

對于本篇教程而言,你需要對清單、元組以及集合有一個基礎的了解。在本篇教程中,将會使用到這些資料結構,并且在這些資料結構上将會進行一些基礎的操作。而且,這篇教程使用的是Python3的版本,是以如果你使用的是Python2的版本,輸出樣例可能會稍微有些差别。

 使用sorted()函數排序

在開始使用Python進行排序之前,首先你要了解如何對數值和字元串資料進行排序。

對數值進行排序

你可以使用Python中的sorted()函數對一個清單進行排序。在本例中,定義了一個整數清單,然後調用sorted()函數,可變的numbers作為sorted()函數的參數。

python sorted函數_在Python中如何使用sorted()函數排序

輸出結果是一個新的,有序的清單。當列印原始變量時,我們可以知道初始值并沒有發生改變。

這個例子展示了sorted()函數四種重要的特性:

1.sorted()函數不需要定義。它是一個内置函數,可以在标準的Python安裝中使用。

2.在沒有額外的參數的情況下,sorted()函數按照升序對值進行排列,也就是按照從小到大的順序。

3.原始的numbers不會改變,因為sorted()函數提供了一個新的有序的輸出結果,并且不改變原始值的順序。

4.當sorted()函數被調用時,它會提供一個有序的清單作為傳回值。

最後一點意味着清單可以使用sorted()函數,并且輸出結果可以立刻指派給一個變量:

python sorted函數_在Python中如何使用sorted()函數排序

在這個例子中,有一個新的變量numbers_sorted存儲了sorted()函數的輸出結果。

你可以通過調用help()函數來檢視sorted()函數以确認所有的這些觀察結果。可選參數key和reverse将在本教程後面介紹:

python sorted函數_在Python中如何使用sorted()函數排序

技術細節:如果你正在從Python2過渡到Python3,并且對它的同名函數非常熟悉,你應該注意Python3中的幾個重要變化:

1.Python3中的sorted()函數沒有cmp參數。相反,隻使用key參數來引入自定義排序邏輯。

2.key和reverse必須作為參數傳遞,這與Python2不同,在Python2中它們可以作為位置參數傳遞。

如果需要将Python2的cmp函數轉換為key函數,請檢視functools.cmp_to_key()。本教程将不介紹使用Python2的任何示例。

元組和集合同樣可以使用sorted()函數:

python sorted函數_在Python中如何使用sorted()函數排序

值得注意的是即使輸入的是一個集合和元組,輸出結果仍然是一個清單,因為sorted()函數根據定義會傳回一個新清單。如果傳回的對象需要比對輸入類型,則可以将其轉化為新類型。如果試圖将結果清單轉換回集合類型,請注意,按照定義而言,集合是無序的:

python sorted函數_在Python中如何使用sorted()函數排序

正如預料的結果一樣,當把結果清單轉換為集合時,numbers_set_sorted是無序的。其它的變量,如numbers_tuple_sorted保留了排序後的順序。

對字元串進行排序

str類型的排序類似于清單和元組等其它可疊代對象。下面的例子展示了sorted()函數如何周遊傳遞給它的值中的每個字元并在輸出中對字元進行排序:

python sorted函數_在Python中如何使用sorted()函數排序

sorted()函數将一個str看作一個清單,并周遊其中的每一個元素。在一個str中,每一個元素都對應着str中的一個字元。sorted()函數以相同的方式對待每一個句子,它會對每個字元包括空格進行排序。

.split()可以改變這個結果并清理輸出,.join()可以将所有内容重新連接配接在一起。我們将會簡單介紹輸出的特定順序以及為什麼是這樣:

python sorted函數_在Python中如何使用sorted()函數排序

在本例中,原句被轉換為一個單詞清單而不是作為一個str。然後,對該清單進行排序并再次組合形成一個str而不是一個清單。

以上就是為大家介紹的在Python中如何使用sorted()函數排序,如果你想了解更多關于python的學習資料,可以關注“武漢千鋒”微信公衆号!