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、如果根据第一个数据排序相同时,按第二个数据进行排序,则直接在表达式后面添加即可。具体方法如上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值