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