首页 > 编程知识 正文

python列表排序sort函数,sort函数排序用法python

时间:2023-05-06 20:37:30 阅读:209741 作者:1156

可以传递len给形参key,这样就是按照元素的长度排序。 In [24]: alist=['math','python','java','cpp']In [25]: sorted(alist,key=len)Out[25]: ['cpp', 'math', 'java', 'python']In [26]: 可以使用单个key值元素来排序,什么意思呢?举个栗子 In [26]: sort_list=[(1,5),(2,4),(3,6)]In [28]: sorted(sort_list,key=lambda x : x[1])Out[28]: [(2, 4), (1, 5), (3, 6)]In [31]: sort_tuple=([1,6],[2,5],[3,4])In [33]: sorted(sort_tuple,key=lambda x:x[1])Out[33]: [[3, 4], [2, 5], [1, 6]]In [34]: sort_tuple=((1,6),(2,5),(3,4))In [35]: sorted(sort_tuple,key=lambda x:x[1])Out[35]: [(3, 4), (2, 5), (1, 6)]# 可以看到sorted函数只把最外层的tuple转换成了list

我们传递给key的值是sort_list的每个元素的第二个值,这样就是按tuple的第二个值的值的大小排序。

可以使用多个key值来排序

这代表奥林匹克运动会的信息,(姓名,成绩,年龄),成绩满分为100分。

participant_list = [ ('skdym', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('洁净的果汁', 90, 22), ('John', 45, 12)]

我们将要按照成绩从高到低排列, 如果成绩相同,年龄小的排在前面。
所以这个问题要使用多个key值来排序,当第一个key值相同的情况下,再去比较第二个key值。
先来看几个小栗子,在python中,是可以直接比较tuple、list等。

In [37]: (1,4)<(1,3)Out[37]: FalseIn [38]: (2,4)<(3,1)Out[38]: TrueIn [39]: [1,3]>[2,2]Out[39]: FalseIn [40]:

所以这个问题编程的时候也是要用多个key值去比较。

# 这代表奥林匹克运动会的信息,(姓名,成绩,年龄),成绩满分为100分。participant_list = [ ('skdym', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('洁净的果汁', 90, 22), ('John', 45, 12)]# 我们将要按照成绩从高到低排列, 如果成绩相同,年龄小的排在前面。# 所以这个问题要使用多个key值来排序,当第一个key值相同的情况下,再去比较第二个key值。In [40]: participant_list = [ ...: ('skdym', 50, 18), ...: ('Terence', 75, 12), ...: ('David', 75, 20), ...: ('洁净的果汁', 90, 22), ...: ('John', 45, 12) ...: ]In [42]: sorted(participant_list,key=lambda x:(100-x[1],x[2]))Out[42]:[('洁净的果汁', 90, 22), ('Terence', 75, 12), ('David', 75, 20), ('skdym', 50, 18), ('John', 45, 12)]

其中为什么要用100-x[1]呢,因为我们是要按照成绩从高到低排,但是sorted函数默认是从低到高排,所以100-x[1]最小的那个值就代表成绩最大的值。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。