python中列表排序的一些问题

在我做PAT的很多时候,会用到列表嵌套的方法。用列表嵌套怎么进行排序呢?
噔噔噔!!用lambda就可以很简洁的进行排序啦!下面介绍一下具体步骤:
这是一份班级学生的成绩信息集合:字段包括学号,姓名,语文成绩,数学成绩

item=[[101,'张三',80,75],[102,'李四',80,85],[103,'王五',63,90],[104,'小明',95,75],[105,'小红',75,65]]

这就是一种列表中嵌套列表的方法,假如我们要对语文成绩进行排序:

item=[[101,'张三',80,75],[102,'李四',80,85],[103,'王五',63,90],[104,'小明',95,75],[105,'小红',75,65]]
item.sort(key=lambda x:x[2], reverse=True)
print(item)

其中x代表的是item列表中的元素
结果是这样子滴:
这里写图片描述
如果语文成绩相同则按数学成绩的高低排序:

item=[[101,'张三',80,75],[102,'李四',80,85],[103,'王五',63,90],[104,'小明',95,75],[105,'小红',75,65]]
item.sort(key=lambda x:(x[2],x[3]), reverse=True)
print(item)

可以看到张三和李四的位置互换了
这里写图片描述

那如果语文成绩和数学成绩都相同,则按学号升序排:
就可以这样做(在学号字段前面加个‘-’号):

item=[[101,'张三',80,75],[102,'李四',80,85],[103,'王五',63,90],[104,'小明',95,75],[105,'小红',75,65]]
item.sort(key=lambda x:(x[2],x[3],-x[0]), reverse=True)
print(item)

总结:
1、对嵌套在列表中的列表进行排序时,可以用lambda方法
2、如果根据第一个数据排序相同时,按第二个数据进行排序,则直接在表达式后面添加即可。具体方法如上。

猜你喜欢

转载自blog.csdn.net/weixin_38052444/article/details/82119818