时间:2021-05-22
python 中sorted与sort有什么区别
sort(cmp=None, key=None, reverse=False)
sorted(iterable, cmp=None, key=None, reverse=False)
sort是容器的函数,用List的成员函数sort进行排序
sorted是Python的内建函数相同的参数,用built-in函数sorted进行排序
sorted(iterable,key=None,reverse=False),返回新的列表,对所有可迭代的对象均有效
sort(key=None,reverse=False) 就地改变列表 reverse:True反序;False 正序
例如:
>>> a=[1,3,5,2,9,4,7,8,6,0]>>> a.sort()>>> a[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> a=[1,3,5,2,9,4,7,8,6,0]>>> sorted(a)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> a[1, 3, 5, 2, 9, 4, 7, 8, 6, 0]以下是详细说明
Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列。
sorted(iterable,key=None,reverse=False),返回新的列表,对所有可迭代的对象均有效
sort(key=None,reverse=False) 就地改变列表 reverse:True反序;False 正序
sort是容器的函数:sort(cmp=None, key=None, reverse=False)
sorted是python的内建函数:sorted(iterable, cmp=None, key=None, reverse=False)
参数解析:
cmp:比较函数,比较什么参数由key决定。例如:cmp(e1, e2) 是具有两个参数的比较函数,返回值:负数(e1 < e2);0(e1 == e2);正数( e1 > e2)。
key:用列表元素的某个属性或函数作为关键字。
reverse:排序规则,可以选择True或者False。
sorted多一个参数iterable:待排序的可迭代类型的容器
示例1:
>>> a=[1,2,5,3,9,4,6,8,7,0,12]>>> a.sort()>>> a[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12]>>> a=[1,2,5,3,9,4,6,8,7,0,12]>>> sorted(a)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12]>>> a[1, 2, 5, 3, 9, 4, 6, 8, 7, 0, 12]区别:
对于一个无序的列表a,调用a.sort(),对a进行排序后返回a,sort()函数修改待排序的列表内容。
而对于同样一个无序的列表a,调用sorted(a),对a进行排序后返回一个新的列表,而对a不产生影响。
示例2:
假设用元组保存每一个学生的信息,包括学号,姓名,年龄。用列表保存所有学生的信息。
>>> list1=[(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]>>> list1.sort()>>> list1[(2, 'Mike', 22), (5, 'Lucy', 19), (8, 'Logan', 20)]>>> list1=[(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]>>> sorted(list1)[(2, 'Mike', 22), (5, 'Lucy', 19), (8, 'Logan', 20)]>>> list1[(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]小结:由示例可以看出,当列表由list(或者tuple)组成时,默认情况下,sort和sorted都会根据list[0](或者tuple[0])作为排序的key,进行排序。
以上都是默认的排序方式,我们可以编写代码控制两个函数的排序行为。主要有三种方式:基于key函数;基于cmp函数和基于reverse函数
1)基于key函数排序
>>> list1=[(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]>>> list1.sort(key=lambda x:x[2])>>> list1[(5, 'Lucy', 19), (8, 'Logan', 20), (2, 'Mike', 22)]>>> list1=[(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]>>> sorted(list1, key=lambda x:x[2])[(5, 'Lucy', 19), (8, 'Logan', 20), (2, 'Mike', 22)]>>> list1[(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]2)基于cmp函数
>>> list1=[(8, 'Zogan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]>>> list1.sort(cmp=lambda x,y:cmp(x[1],y[1]))>>> list1[(5, 'Lucy', 19), (2, 'Mike', 22), (8, 'Zogan', 20)]>>> list1=[(8, 'Zogan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]>>> sorted(list1, cmp=lambda x,y:cmp(x[1],y[1]))[(5, 'Lucy', 19), (2, 'Mike', 22), (8, 'Zogan', 20)]>>> list1[(8, 'Zogan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]3)基于reverse函数
>>> a=[1,2,5,3,9,4,6,8,7,0,12]>>> a.sort(reverse=False)>>> a[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12] >>> a=[1,2,5,3,9,4,6,8,7,0,12]>>> a.sort(reverse=True)>>> a[12, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]>>> a.sort(reverse=True)小结:reverse=False为升序排序;reverse=True为降序排序
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了python内置函数sorted()用法。分享给大家供大家参考,具体如下:列表对象提供了sort()方法支持原地排序,而内置函数sorted()不
在python环境中提供两种排序方案:用库函数sorted()对字符串排序,它的对象是字符;用函数sort()对数字排序,它的对象是数字,如果读取文件的话,需要
本文研究的主要是Python中sort和sorted函数的相关内容,具体如下。一、sort函数sort函数是序列的内部函数函数原型:L.sort(cmp=Non
本文实例讲述了Python实现的列表排序、反转操作。分享给大家供大家参考,具体如下:排序:使用sorted方法和列表的sort方法:sorted方法适用范围更广
本文实例讲述了python使用sorted函数对列表进行排序的方法。分享给大家供大家参考。具体如下:python提供了sorted函数用于对列表进行排序,并且可