關於python的列表排序問題彙總
阿新 • • 發佈:2019-02-20
以下總結了python列表排序,基本上覆蓋了所有問題。
# -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding('UTF-8') '''列表排序''' '''資料需要排序時,往往會把資料格式轉化為列表進行排序''' #型別1 L = [5,8,3,0,6,9,3] L.sort() print L #型別2 students0 = [('john',10), ('jane',15), ('dave',13)] item0 = sorted(students0, key=lambda x: x[1]) print '列表students0的排序為:',item0 #型別3 students1 = [('john', 'A', 16), ('jane', 'B', 12), ('dave', 'B', 18)] item1 = sorted(students1, key=lambda x: x[2]) #用元素索引做key print '列表students1的排序為:',item1 #型別4 items = [('john', '14','sfa'), ('jane', '12','sdf'), ('dave', '18','sdre')] item0 = sorted(items, key=lambda x: (x[0], x[1])) #無法對元組的第一個元素x[0]進行排序。不是數字 print '列表students2的排序為:',item0 #很神奇,在處理夢婷的資料時為key=lambda x: (x[0], x[1]),但是這裡這樣寫得到的結果卻不對。 item1 = sorted(items, key=lambda x:(x[1],x[0]),reverse=True) #這裡可以換成x:x[1] print '列表students2的排序為:',item1 #型別5 ,這個例子時和型別4做個對比。列表不同,給列表的中元組的某一個元素排序方法就有所差異 items3 = [('76', '14','sfa'), ('78', '12','sdf'), ('80', '18','sdre')] #這裡列表中的元素中元組的前兩個元素都是字串型別的數字 item3 = sorted(items3, key=lambda x:x[1]) print item3 #注:夢停的資料處理出來列表欄位型別和型別5列表相似
其實總結以下,這些例子可以分為兩類
一類時純列表,如型別1
一類是列表裡的元素時元組,對列表裡元組的第n+1個元素x[n]進行排序,這個x[n]可以是int型的數字,也可以是str型的數字。其實都用的是這個函式
sorted(item, key=lambda x:x[n]) #這裡的item是要處理的該型別的列表。x[n]代表要對元組的第n+1個元素排序。 如x[0]是對列表裡所有元組的第一個元素進行排序。