python之sort(),sorted()
来源:互联网 发布:kingroot卸载软件失败 编辑:程序博客网 时间:2024/05/16 12:48
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为降序排序
- python之sort(),sorted()
- Python之 sort和sorted
- python sorted和sort
- python--sort,sorted,argsort
- Python sort sorted 详解
- python sort and sorted
- Python sort与sorted
- Python sort and sorted
- Python sort and sorted
- Python sort sorted OrderDict
- python sort() sorted()
- Python sort sorted函数详解
- python的排序 sort sorted
- Python sort sorted函数详解
- Python sort sorted函数详解
- Python sort sorted函数详解
- python有关sorted和sort
- python sort / sorted 和 argsort()
- 创业日志(十七) 且迷茫且坚持
- C_string,string,char*的区别和联系
- 公共钥匙盒
- Linux基本指令
- 【原材料准备:Python机器学习】关于深度学习介绍
- python之sort(),sorted()
- mongodb查询的语法(大于,小于,大于或等于,小于或等于等等)
- HDU 2100-Lovekey-大树模拟26进制
- 解决:ASP.NET 4.5尚未在Web服务器上注册。您需要手动将Web服务器配置为使用ASP.NET 4.5,这样您的网站才能正确运行。
- 字符串精确匹配KMP算法思想演变
- windows下schtasks的DOS命令的使用
- js笔记·····DOM(document object model)
- 机器学习算法工程师需要掌握的技能与要踩的坑
- Microsoft Azure AD 用户搜索分页api调用