1. 程式人生 > >python中列表排序的一些問題

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、如果根據第一個資料排序相同時,按第二個資料進行排序,則直接在表示式後面新增即可。具體方法如上。