python中 内置函数sort()

一、介绍

list.sort( key=None, reverse=False)
参数key的作用是什么呢?
总的来说,我们可以利用它实现按我们想要的标准进行排序,即我们可以自定义排序的标准,或者称为自定义排序的方式。

参数key是某个函数的返回值,这个函数的输入参数只有一个,那就是我们要待排序的列表的每一个元素(相当于待排序列表中有多少个元素就执行多少次这个函数),这个函数的返回值作为我们对列表元素进行排序的依据。

list1 = [[1, 7], [1, 5], [2, 4], [1, 1]]
list1.sort(key=lambda x:x[1])
print(list1)
”“”
[[1, 1], [2, 4], [1, 5], [1, 7]]返回值是第2个元素,所以是按照第1个元素大小排序
“”“
list1 = ['baidu', 'CSDN', 'QQ', 'Google', 'suwenhao']
list1.sort(key=lambda x1: len(x1))
或者list1.sort(key=len)
”“”
['QQ', 'CSDN', 'baidu', 'Google', 'suwenhao'],函数返回值是长度,因此是由元素长度排序
“”“”

二、案例

将ls[5,‘a’,8,‘z’,‘e’,0,7,‘m’]排序,排序规则所有数字在字母前,数字间按大小排序,子母间相对位置不变。

#构建排序函数
f = lambda x: (0,x) if type(x)==type(0) else (1,)
ls = ls.sort(key=f)

 上述函数意为当x的类型是数字型时,返回(0,x),否则则返回(1,)。
python中对元组比大小时先比较第一个元素,若相同则向后继续比较。故以自定义函数f进行排序时,先比较返回的第一个元素(0或1),将所有数字元素前置,字母元素后置。如果是数字元素再按返回元组第二个元素排序,进行数字键排序;若为字母,由于排序稳定,相对位置不变。

k这个函数参数是迭代对象每个元素,返回值是比较的内容

ls = [19,42,
    {'name':'zhangsan','age':18},
    {'name':'lisi','age':12},
    {'name':'wangwu','age':23}
]
print(isinstance(0 ,int))
ls.sort(key= lambda x: x['age'] if isinstance(x,dict) else x)
print(ls)
“”“
[{'name': 'lisi', 'age': 12}, {'name': 'zhangsan', 'age': 18}, 19, {'name': 'wangwu', 'age': 23}, 42]
”“”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值