在 Python 中對集合進行排序
Hemank Mehtani
2023年1月30日
2021年7月13日
集合是一個無序且無索引的集合,沒有重複的元素。集合是 Python 中可用的四種內建資料型別之一,使用大括號編寫。
鑑於集合是無序的,不可能對集合的值進行排序。但是,如果我們列印一個集合,它會以排序的方式顯示。
請參考下面的程式碼。
s = {5,2,7,1,8}
print(s)
輸出:
{1, 2, 5, 7, 8}
如果我們願意,我們可以使用不同的函式對一個集合進行排序並返回一個列表。這些將在下面討論。
在 Python 中使用 sorted()
函式對集合進行排序
sorted()
函式是 Python 中的內建函式,它以列表的形式返回已排序的序列(列表、元組、字串)或已排序的集合(集合、字典)。sorted()
函式對原始可迭代序列沒有影響,因為它提供了一個新的排序輸出。
例如,
s = {5,2,7,1,8}
print(sorted(s))
輸出:
[1, 2, 5, 7, 8]
請注意,sorted()
函式返回一個列表而不是一個集合。我們可以再次使用 set()
函式將此列表轉換為集合。然而,這是多餘的,因為集合是無序的。
在 Python 中使用 sort()
方法對集合進行排序
sort()
方法用於按升序或降序對列表中給定的元素進行排序。這是一個破壞性的過程,即與 sorted()
函式不同,sort()
方法對原始列表本身中的元素進行排序。
我們不能在集合中使用這個函式。但是,我們可以將一個集合包含在一個列表中,它會對它們進行排序。
例如,
s = [{5,2,7,1,8}]
s.sort()
print(s)
輸出:
[{1, 2, 5, 7, 8}]
請注意,sort()
函式還會返回列表中的最終輸出。我們也可以對 sorted() 函式採取類似的方法。
另一方面,我們可以使用 list()
函式將集合轉換為列表,並使用此方法對其進行排序。
請參考下面的程式碼。
s = {5,2,7,1,8}
l = list(s)
l.sort()
print(l)
輸出:
[1, 2, 5, 7, 8]