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为降序排序
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 魔兽世界wlk暗牧一键输出宏是什么 wlk暗牧一键输出宏介绍
- 群星.1996-红不让台语原唱2辑【福和唱片】【WAV+CUE】
- 郭书瑶.2009-爱的抱抱(EP)【种子音乐】【FLAC分轨】
- 郑瑞芬.1989-BE.MY.BABY【现代】【WAV+CUE】
- 花钱请人每周放30万只不咬人的蚊子 防治登革热传播
- 饭制《第一后裔》丧尸版弗蕾娜
- 贝克汉姆亲临!2024FC品类游戏嘉年华圆满落幕
- 「命轨爻错之翼」风之翼发放说明
- 《原神》前瞻特别节目回顾长图
- 米游币抽抽乐-原神专场现已开启!
- 黑鸭子2001《风情中国HQCD》[日本版][WAV+CUE]
- 陈杰洲1990-成人礼[滚石][WAV+CUE]
- MarkAanderud-HandsFree(2024)[24-44,1]FLAC
- 孙露《观心》1:1母盘直刻限量版[低速原抓WAV+CUE][361M]
- 钟志刚《汽车DJ玩主》[低速原抓WAV+CUE][1G]