Skip to content

Python中排序主要用到sorted和sort。obj.sort()是方法,sorted(obj)是函数,前者永久改变列表次序,后者生成一个新的列表。

一、sorted函数的定义

sorted函数是Python中常用的内置函数,调用无需加载库,直接使用即可。

它主要用来对序列(列表、元组、字典、集合、字符串)进行排序。

其基本调用语法如下:

text
sorted(iterable, /, *, key=None, reverse=False)

iterable:待排序的序列 key:排序规则 reverse:指定排序的方式,默认值False,即升序排列

二、sorted函数实例

例1:sorted函数对列表进行排序

我们先来看下sorted函数使用默认参数对列表进行排序的结果,代码如下:

text
a = [6, 5, 1, 2, 4]
print(sorted(a))
print(a)

得到结果:

text
[1, 2, 4, 5, 6]
[6, 5, 1, 2, 4]

从结果知,sorted函数在默认参数下对原序列进行了升序排列,并且没有在原序列上修改,重新生成了一个排好序的列表。

例2:sorted函数对元组进行排序

接着来看下sorted函数修改默认参数对元组进行排序的结果,代码如下:

text
a = (6, 5, 1, 2, 4)
print(sorted(a, reverse=True))
print(a)

得到结果:

text
[6, 5, 4, 2, 1]
(6, 5, 1, 2, 4)

从结果知,在修改reverse参数为True的情况下,sorted函数对原序列进行了降序排列,生成了一个新的序列。

并且在原始序列为元组的情况下,生成的序列变成了列表。

例3:sorted函数对字典进行排序

接着来看下sorted函数对字典进行排序的结果,代码如下:

text
a = {7:'D', 2:'B', 3:'B', 4:'E', 5:'A'}
print(sorted(a))
print(a)

得到结果:

text
[2, 3, 4, 5, 7]
{7: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'}

从结果知,在默认参数下sorted函数对字典的键进行了升序排列,生成了一个新的列表。

例4:sorted函数对集合进行排序

接着来看下sorted函数对集合进行排序的结果,代码如下:

text
a = {'葡萄', '火龙果', '释迦牟尼果', '开心果', '榴莲'}
print(sorted(a, key=lambda x:len(x)))
print(a)

得到结果:

text
['葡萄', '榴莲', '火龙果', '开心果', '释迦牟尼果']
{'释迦牟尼果', '火龙果', '葡萄', '榴莲', '开心果'}

由于key设定了根据元素长度排序,reverse取默认值,故sorted函数对集合按照元素长度升序排列。

由于集合是无序的,所以在打印原始集合a时出现了和定义不一致的情况。

例5:sorted函数对字符串进行排序

接着来看下sorted函数对字符串进行排序的结果,代码如下:

text
a = 'enumerate'
print(sorted(a))

得到结果:

text
['a', 'e', 'e', 'e', 'm', 'n', 'r', 't', 'u']

从结果知,默认参数下sorted函数对字符串进行排序,是把字符串拆成了一个一个字母,再按升序排列。

三、sorted函数和sort函数的区别

1.sort函数只能对列表进行排序,而sorted函数可用于对所有可迭代对象排序。

2.sort函数是在原列表上进行修改,而sorted函数会重新生成一个排好序的列表。

3.使用语法上有区别。

现在我们先来看下sort函数的使用方法,代码如下:

text
a = [6, 5, 1, 2, 4]
a.sort()
print(a)

得到结果:

text
[1, 2, 4, 5, 6]

从结果知,sort函数和soted函数在使用语法上有区别,sort函数对列表进行了排序,并且是在原列表上进行了修改。

为了大家看得更清晰,对比一下soted函数的使用方法,代码如下:

text
a = [6, 5, 1, 2, 4]
print(sorted(a))
print(a)

得到结果:

text
[1, 2, 4, 5, 6]
[6, 5, 1, 2, 4]

从结果知,sorted函数在默认参数下对原序列进行了升序排列,并且没有在原序列上修改,重新生成一个排好序的列表。