python中sorted方法和列表的sort方法
sort 与 sorted 区别:
sort 是应用在 list 上的方法,属于列表的成员方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
sort使用方法为ls.sort(),而sorted使用方法为sorted(ls)
一、基本形式
列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的。
排序,数字、字符串按照ASCII,中文按照unicode从小到大排序。
>>>List1 = [3, 2, 4, 5, 1, 9]
>>>List1.sort()
>>>List1
[1, 2, 3, 4, 5, 9]
如果需要一个排序好的副本,代码如下:
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>>List1 = [3, 2, 4, 5, 1, 9]
>>>List2 = List1[:]
>>>List2.sort()
>>>List2
[1, 2, 3, 4, 5, 9]
>>>List1
[3, 2, 4, 5, 1, 9]
另一种获取已排序的列表副本的方法是使用sorted函数:
>>>List1 = [3, 2, 4, 5, 1, 9]
>>>List2 = sorted(List1) #sorted返回一个有序的副本,并且类型总是列表
>>>List2
[1, 2, 3, 4, 5, 9]
>>>List1
[3, 2, 4, 5, 1, 9]
二、可选参数
sort方法还有两个可选参数:key和reverse
1、key在使用时必须提供一个排序过程中调用的函数:
>>>List1 = ['1', '333', '22', '55555', '4444']
>>>List1.sort(key=len)
>>>List1
['1', '22', '333', '4444', '55555']
2、reverse实现逆序排序,需要提供一个布尔值:
>>>List1 = [3, 23, 1, 0, 8]
>>>List1.sort(reverse=True)
>>>List1
[23, 8, 3, 1, 0]
True为倒序排列,False为正序排列
三、例子
例:
列表按照其中每一个值的绝对值排序。
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>>List1 = [123, 89, -32, 0, 321, -36, 33]
>>>List2 = sorted(List1, key=abs)
>>>List2
[0, -32, 33, -36, 89, 123, 321]
>>>List1
[123, 89, -32, 0, 321, -36, 33]
对复杂的元组排序
>>>student_tuples = [
('john', 'A', 15),
('jane', 'B', 12),
('tom', 'A', 11),
('Jack', 'B', 13)
]
>>>result = sorted(student_tuples, key=lambda student: student[2])
>>>result
[('tom', 'A', 11), ('jane', 'B', 12), ('Jack', 'B', 13), ('john', 'A', 15)]
根据字典的value排序
默认sorted是对dict的key排序的,如果要根据dict的value排序就需要指定key参数了。
>>>dict_my = {'a': 2, 'c': 5, 'b': 1, 'ab': 6, 'e': 2}
>>>dict_my
{'a': 2, 'ab': 6, 'b': 1, 'c': 5, 'e': 2}
>>>result = sorted(dict_my)
>>>result
['a', 'ab', 'b', 'c', 'e']
>>>dict_my['c']
>>>result2 = sorted(dict_my, key=lambda x : dict_my[x], reverse=True)
>>>result2
['ab', 'c', 'a', 'e', 'b']
本文来自博客园,作者:I'm_江河湖海,转载请注明原文链接:https://www.cnblogs.com/jhhh/p/16762510.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端