在 Python 中对集合进行排序
Hemank Mehtani
2023年1月30日
集合是一个无序且无索引的集合,没有重复的元素。集合是 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]