Python list排序的兩種方法及例項講解

2021-08-04 22:26:15 字數 2368 閱讀 9449

對list進行排序,python提供了兩個方法

list

.sort(func=

none, key=

none, reverse=

false)

python例項:

>>> list = [2,5,8,9,3]  

>>> list

[2,5,8,9,3]

>>> list.sort()

>>> list

[2, 3, 5, 8, 9]

python例項:

>>> list = [2,5,8,9,3]  

>>> list

[2,5,8,9,3]

>>> sorted(list)

[2, 3, 5, 8, 9]

例項1:正向排序:

>>>l =[2,3,1,4]

>>>l.sort()

>>>l

>>>[1,2,3,4]

例項2:反向排序:

>>>l = [2,3,1,4]

>>>l.sort(reverse=true)

>>>l

[4,3,2,1]

例項3:對第二個關鍵字排序:

>>>l = [('b',6),('a',1),('c',3),('d',4)]

>>>l.sort(lambda x,y:cmp(x[1],y[1]))

>>>l

[('a', 1), ('c', 3), ('d', 4), ('b', 6)]

例項4: 對第二個關鍵字排序:

>>>l = [('b',6),('a',1),('c',3),('d',4)]

>>>l.sort(key=lambda x:x[1])

>>>l

[('a', 1), ('c', 3), ('d', 4), ('b', 6)]

例項5: 對第二個關鍵字排序:

>>>l = [('b',2),('a',1),('c',3),('d',4)]

>>>import operator

>>>l.sort(key=operator.itemgetter(1))

>>>l

[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

例項6:(dsu方法:decorate-sort-undercorate):

>>>l = [('b',2),('a',1),('c',3),('d',4)]

>>>a = [(x[1],i,x) for i,x in enumerate(l)] #i can confirm the stable sort

>>>a.sort()

>>>l = [s[2] for s in a]

>>>l

[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

以上給出了6中對list排序的方法,其中例項3.4.5.6能起到對以list item中的某一項

為比較關鍵字進行排序.

效率比較:

cmp < dsu < key

通過實驗比較,方法3比方法6要慢,方法6比方法4要慢,方法4和方法5基本相當 。

例項7:

>>>l = [('d',2),('a',4),('b',3),('c',2)]

>>> l.sort(key=lambda x:x[1])

>>> l

[('d', 2), ('c', 2), ('b', 3), ('a', 4)]

我們看到,此時排序過的l是僅僅按照第二個關鍵字來排的,

如果我們想用第二個關鍵字排過序後再用第乙個關鍵字進行排序呢?有兩種方法 :

例項8:

>>> l = [('d',2),('a',4),('b',3),('c',2)]

>>> l.sort(key=lambda x:(x[1],x[0]))

>>> l

[('c', 2), ('d', 2), ('b', 3), ('a', 4)]

例項9:

>>> l = [('d',2),('a',4),('b',3),('c',2)]

>>> l.sort(key=operator.itemgetter(1,0))

>>> l

[('c', 2), ('d', 2), ('b', 3), ('a', 4)]

兩種氣泡排序

泡泡往前冒 for int i 1 i score.length i 例如 for int i 1 i score.length i system.out.print 第 i 次排序的結果 for int j 0 j score.length j system.out.println for int...

兩種排序方法

題目描述 考拉有n個字串字串,任意兩個字串長度都是不同的。考拉最近學習到有兩種字串的排序方法 1.根據字串的字典序排序。例如 car carriage cats doggies koala 2.根據字串的長度排序。例如 car cats koala doggies carriage 考拉想知道自己的...

兩種快速排序

快排是一種基於交換的排序,氣泡排序 兩兩相鄰作比較,逆序則交換 也是基於交換的排序,快排運用了二分法的思想,每次找乙個哨兵,比哨兵小的放一邊,大的放一邊,這是完成了一趟快排。冒泡 for int i 0 ia j 1 快排一 void quicksort int left,int right if ...