App下載

Python 排序列表——如何按降序或升序排序

杰西卡·威爾金斯 2021-09-04 10:20:28 瀏覽數(shù) (6622)
反饋

在 Python 中,您可以使用?sorted()?方法或?sort()?方法對數(shù)據(jù)進行排序。在本文中,我將提供?sorted()?和?sort()?方法的代碼示例并解釋兩者之間的區(qū)別。

Python sort() 方法

此方法接受一個列表并對其進行排序。此方法沒有返回值。

在這個例子中,我們有一個數(shù)字列表,我們可以使用該sort()方法按升序?qū)α斜磉M行排序。

my_list = [67, 2, 999, 1, 15]

# this prints the unordered list
print("Unordered list: ", my_list)

# sorts the list in place
my_list.sort()

# this prints the ordered list
print("Ordered list: ", my_list)

如果列表已經(jīng)排序,那么它將在控制臺中返回 None 。

my_list = [6, 7, 8, 9, 10]

# this will return None because the list is already sorted
print(my_list.sort())

該?sort()?方法可以接受兩個可選參數(shù),稱為?key?和?reverse?。

?key  ?具有將在列表中的每個項目上調(diào)用的函數(shù)的值。

在這個例子中,我們可以使用?len()?函數(shù)作為?key?參數(shù)的值。?key=len?將告訴計算機按長度從最小到最大對名稱列表進行排序。

names = ["Jessica", "Ben", "Carl", "Jackie", "Wendy"]

print("Unsorted: ", names)
names.sort(key=len)
print("Sorted: ", names)

?reverse?為一個布爾值????True? ?或者? ?False??。??

在這個例子中,?reverse=True?將告訴計算機以逆字母順序?qū)α斜磉M行排序。

names = ["Jessica", "Ben", "Carl", "Jackie", "Wendy"]

print("Unsorted: ", names)
names.sort(reverse=True)
print("Sorted: ", names)

Python sorted() 方法

此方法將從可迭代對象返回一個新的排序列表??傻鷮ο蟮氖纠斜?、字符串和元組。

?sort()?和?sorted()?之間的一個主要區(qū)別是?sorted()?將返回一個新列表,同時?sort()?對列表進行排序。

在這個例子中,我們有一個將按升序排序的數(shù)字列表。

sorted_numbers = sorted([77, 22, 9, -6, 4000])

print("Sorted in ascending order: ", sorted_numbers)

該?sorted()?方法還接受可選?key?和?reverse?參數(shù)。

在這個例子中,我們有一個按降序排序的數(shù)字列表。?reverse=True?告訴計算機將列表從最大到最小反轉(zhuǎn)。

sorted_numbers = sorted([77, 22, 9, -6, 4000], reverse=True)

print("Sorted in descending order: ", sorted_numbers)

?sorted()?和之間的另一個主要區(qū)別?sort()?是該?sorted()?方法接受任何可迭代對象,而該?sort()?方法僅適用于列表。

在此示例中,我們使用?split()?方法將字符串分解為單個單詞。然后我們使用?sorted()?從最小到最大的長度對單詞進行排序。  

my_sentence = "Jessica found a dollar on the ground"

print("Original sentence: ", my_sentence)
print(sorted(my_sentence.split(), key=len))

我們還可以修改此示例并包含?key?和?reverse?參數(shù)。

這個修改后的示例現(xiàn)在將從最大到最小對列表進行排序。

my_sentence = "Jessica found a dollar on the ground"

print("Original sentence: ", my_sentence)
print(sorted(my_sentence.split(), key=len, reverse=True))

我們也可以使用 ?sorted()?上的方法?tuples?。

在這個例子中,我們有一個tuples代表樂隊學(xué)生姓名、年齡和樂器的集合。

band_students = [
    ('Danny', 17, 'Trombone'),
    ('Mary', 14, 'Flute'),
    ('Josh', 15, 'Percussion')
]

我們可以使用該?sorted()?方法按學(xué)生的年齡對這些數(shù)據(jù)進行排序。該?key?可以傳入一個lambda?函數(shù),告訴計算機按年齡進行升序排序。

一個?lambda?函數(shù)是一個沒有名稱的匿名函數(shù)。您可以使用?lambda?關(guān)鍵字定義這種類型的函數(shù)。

lambda student: student[1]

要訪問? a ?中的值?tuple?,請使用括號表示法和要訪問的索引號。由于我們從零開始計數(shù),因此年齡值為[1]。

這是完整的示例。

band_students = [
    ('Danny', 17, 'Trombone'),
    ('Mary', 14, 'Flute'),
    ('Josh', 15, 'Percussion')
]

print(sorted(band_students, key=lambda student: student[1]))

我們可以修改此示例并改為按儀器對數(shù)據(jù)進行排序。我們可以使用?reverse?的逆字母順序?qū)ぞ哌M行排序。

band_students = [
    ('Danny', 17, 'Trombone'),
    ('Mary', 14, 'Flute'),
    ('Josh', 15, 'Percussion')
]

print(sorted(band_students, key=lambda student: student[2], reverse=True))

小結(jié)

以上就是該文章的全部內(nèi)容了,后續(xù)python學(xué)習(xí)內(nèi)容可以繼續(xù)關(guān)注猿筆記。


0 人點贊