在 Python 中,您可以使用?sorted()
?方法或?sort()
?方法對(duì)數(shù)據(jù)進(jìn)行排序。在本文中,我將提供?sorted()
?和?sort()
?方法的代碼示例并解釋兩者之間的區(qū)別。
Python sort() 方法
此方法接受一個(gè)列表并對(duì)其進(jìn)行排序。此方法沒(méi)有返回值。
在這個(gè)例子中,我們有一個(gè)數(shù)字列表,我們可以使用該sort()方法按升序?qū)α斜磉M(jìn)行排序。
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)排序,那么它將在控制臺(tái)中返回 None 。
my_list = [6, 7, 8, 9, 10]
# this will return None because the list is already sorted
print(my_list.sort())
該?sort()
?方法可以接受兩個(gè)可選參數(shù),稱為?key
?和?reverse
?。
?key
?具有將在列表中的每個(gè)項(xiàng)目上調(diào)用的函數(shù)的值。
在這個(gè)例子中,我們可以使用?len()
?函數(shù)作為?key
?參數(shù)的值。?key=len
?將告訴計(jì)算機(jī)按長(zhǎng)度從最小到最大對(duì)名稱列表進(jìn)行排序。
names = ["Jessica", "Ben", "Carl", "Jackie", "Wendy"]
print("Unsorted: ", names)
names.sort(key=len)
print("Sorted: ", names)
?reverse
?為一個(gè)布爾值????True
? ?或者? ?False
??。??
在這個(gè)例子中,?reverse=True
?將告訴計(jì)算機(jī)以逆字母順序?qū)α斜磉M(jìn)行排序。
names = ["Jessica", "Ben", "Carl", "Jackie", "Wendy"]
print("Unsorted: ", names)
names.sort(reverse=True)
print("Sorted: ", names)
Python sorted() 方法
此方法將從可迭代對(duì)象返回一個(gè)新的排序列表??傻鷮?duì)象的示例包括列表、字符串和元組。
?sort()
?和?sorted()
?之間的一個(gè)主要區(qū)別是?sorted()
?將返回一個(gè)新列表,同時(shí)?sort()
?對(duì)列表進(jìn)行排序。
在這個(gè)例子中,我們有一個(gè)將按升序排序的數(shù)字列表。
sorted_numbers = sorted([77, 22, 9, -6, 4000])
print("Sorted in ascending order: ", sorted_numbers)
該?sorted()
?方法還接受可選?key
?和?reverse
?參數(shù)。
在這個(gè)例子中,我們有一個(gè)按降序排序的數(shù)字列表。?reverse=True
?告訴計(jì)算機(jī)將列表從最大到最小反轉(zhuǎn)。
sorted_numbers = sorted([77, 22, 9, -6, 4000], reverse=True)
print("Sorted in descending order: ", sorted_numbers)
?sorted()
?和之間的另一個(gè)主要區(qū)別?sort()
?是該?sorted()
?方法接受任何可迭代對(duì)象,而該?sort()
?方法僅適用于列表。
在此示例中,我們使用?split()
?方法將字符串分解為單個(gè)單詞。然后我們使用?sorted()
?從最小到最大的長(zhǎng)度對(duì)單詞進(jìn)行排序。
my_sentence = "Jessica found a dollar on the ground"
print("Original sentence: ", my_sentence)
print(sorted(my_sentence.split(), key=len))
我們還可以修改此示例并包含?key
?和?reverse
?參數(shù)。
這個(gè)修改后的示例現(xiàn)在將從最大到最小對(duì)列表進(jì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
?。
在這個(gè)例子中,我們有一個(gè)tuples代表樂(lè)隊(duì)學(xué)生姓名、年齡和樂(lè)器的集合。
band_students = [
('Danny', 17, 'Trombone'),
('Mary', 14, 'Flute'),
('Josh', 15, 'Percussion')
]
我們可以使用該?sorted()
?方法按學(xué)生的年齡對(duì)這些數(shù)據(jù)進(jìn)行排序。該?key
?可以傳入一個(gè)lambda
?函數(shù),告訴計(jì)算機(jī)按年齡進(jìn)行升序排序。
一個(gè)?lambda
?函數(shù)是一個(gè)沒(méi)有名稱的匿名函數(shù)。您可以使用?lambda
?關(guān)鍵字定義這種類型的函數(shù)。
lambda student: student[1]
要訪問(wèn)? a
?中的值?tuple
?,請(qǐng)使用括號(hào)表示法和要訪問(wèn)的索引號(hào)。由于我們從零開(kāi)始計(jì)數(shù),因此年齡值為[1]。
這是完整的示例。
band_students = [
('Danny', 17, 'Trombone'),
('Mary', 14, 'Flute'),
('Josh', 15, 'Percussion')
]
print(sorted(band_students, key=lambda student: student[1]))
我們可以修改此示例并改為按儀器對(duì)數(shù)據(jù)進(jìn)行排序。我們可以使用?reverse
?的逆字母順序?qū)ぞ哌M(jìn)行排序。
band_students = [
('Danny', 17, 'Trombone'),
('Mary', 14, 'Flute'),
('Josh', 15, 'Percussion')
]
print(sorted(band_students, key=lambda student: student[2], reverse=True))
小結(jié)
以上就是該文章的全部?jī)?nèi)容了,后續(xù)python學(xué)習(xí)內(nèi)容可以繼續(xù)關(guān)注猿筆記。