Python中排序主要用到sorted和sort。obj.sort()是方法,sorted(obj)是函数,前者永久改变列表次序,后者生成一个新的列表。
一、sorted函数的定义
sorted函数是Python中常用的内置函数,调用无需加载库,直接使用即可。
它主要用来对序列(列表、元组、字典、集合、字符串)进行排序。
其基本调用语法如下:
sorted(iterable, /, *, key=None, reverse=False)
iterable:待排序的序列 key:排序规则 reverse:指定排序的方式,默认值False,即升序排列
二、sorted函数实例
例1:sorted函数对列表进行排序
我们先来看下sorted函数使用默认参数对列表进行排序的结果,代码如下:
a = [6, 5, 1, 2, 4]
print(sorted(a))
print(a)
得到结果:
[1, 2, 4, 5, 6]
[6, 5, 1, 2, 4]
从结果知,sorted函数在默认参数下对原序列进行了升序排列,并且没有在原序列上修改,重新生成了一个排好序的列表。
例2:sorted函数对元组进行排序
接着来看下sorted函数修改默认参数对元组进行排序的结果,代码如下:
a = (6, 5, 1, 2, 4)
print(sorted(a, reverse=True))
print(a)
得到结果:
[6, 5, 4, 2, 1]
(6, 5, 1, 2, 4)
从结果知,在修改reverse参数为True的情况下,sorted函数对原序列进行了降序排列,生成了一个新的序列。
并且在原始序列为元组的情况下,生成的序列变成了列表。
例3:sorted函数对字典进行排序
接着来看下sorted函数对字典进行排序的结果,代码如下:
a = {7:'D', 2:'B', 3:'B', 4:'E', 5:'A'}
print(sorted(a))
print(a)
得到结果:
[2, 3, 4, 5, 7]
{7: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'}
从结果知,在默认参数下sorted函数对字典的键进行了升序排列,生成了一个新的列表。
例4:sorted函数对集合进行排序
接着来看下sorted函数对集合进行排序的结果,代码如下:
a = {'葡萄', '火龙果', '释迦牟尼果', '开心果', '榴莲'}
print(sorted(a, key=lambda x:len(x)))
print(a)
得到结果:
['葡萄', '榴莲', '火龙果', '开心果', '释迦牟尼果']
{'释迦牟尼果', '火龙果', '葡萄', '榴莲', '开心果'}
由于key设定了根据元素长度排序,reverse取默认值,故sorted函数对集合按照元素长度升序排列。
由于集合是无序的,所以在打印原始集合a时出现了和定义不一致的情况。
例5:sorted函数对字符串进行排序
接着来看下sorted函数对字符串进行排序的结果,代码如下:
a = 'enumerate'
print(sorted(a))
得到结果:
['a', 'e', 'e', 'e', 'm', 'n', 'r', 't', 'u']
从结果知,默认参数下sorted函数对字符串进行排序,是把字符串拆成了一个一个字母,再按升序排列。
三、sorted函数和sort函数的区别
1.sort函数只能对列表进行排序,而sorted函数可用于对所有可迭代对象排序。
2.sort函数是在原列表上进行修改,而sorted函数会重新生成一个排好序的列表。
3.使用语法上有区别。
现在我们先来看下sort函数的使用方法,代码如下:
a = [6, 5, 1, 2, 4]
a.sort()
print(a)
得到结果:
[1, 2, 4, 5, 6]
从结果知,sort函数和soted函数在使用语法上有区别,sort函数对列表进行了排序,并且是在原列表上进行了修改。
为了大家看得更清晰,对比一下soted函数的使用方法,代码如下:
a = [6, 5, 1, 2, 4]
print(sorted(a))
print(a)
得到结果:
[1, 2, 4, 5, 6]
[6, 5, 1, 2, 4]
从结果知,sorted函数在默认参数下对原序列进行了升序排列,并且没有在原序列上修改,重新生成一个排好序的列表。