1. 程式人生 > >關於python的列表排序問題彙總

關於python的列表排序問題彙總

以下總結了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]是對列表裡所有元組的第一個元素進行排序。