python列表的排序

2021-07-24 16:01:23 字數 2204 閱讀 7851

列表排序有三種方法:

reverse()方法、sort()方法、sorted()方法。

1.reverse():

列表反轉排序。把原列表中的元素順序從左至右反轉過來重新存放,而不會對列表中的引數進行排序整理,即不會根據大小排序。

eg:list1=['d',6,'e',5,'f',4]

list1.reverse()

list1

>>>[4, 'f', 5, 'e', 6, 'd']

2.sort():

對列表內容進行公升序排序,直接修改原列表的排序,排序後的新列表會覆蓋原列表。

eg:

list1=['e',6,'d',5,'f',4]

list1.sort()

list1

>>>[4, 5, 6, 'd', 'e', 'f']

3.1 sorted():

排序時保留原列表,返回乙個排序好的新列表。

eg:list1=['e',6,'d',5,'f',4]

list2=sorted(list1)

list2

>>>[4, 5, 6, 'd', 'e', 'f']

3.2 sorted([data] [,cmp=none、key=none] [,reverse=false])   [ ]內的部分表示可省

data是待排序資料,可以是list或者iterator,cmp和key都是函式,這兩個函式作用於data的元素上產生乙個結果,sorted()方法根據這個結果來排序。

cmp(e1,e2)是帶兩個引數的比較函式,返回值:-1表示:e1e2 。 cmp預設none(用內建的比較函式)。

key用來為每個元素提取比較值。預設為none(直接比較每個元素)

reverse=false表示公升序排列。reverse=true表示降序排列。

eg:對由tuple組成的列表排序

list1=[('e',6),('d',5),('f',4)]

list2=[(1,'b',3),(3,'a',2),(6,'d',5)]

#(使用key)

list3=sorted(list1,key=lambda list1:list1[0])  #以第乙個元素進行排序

list4=sorted(list2,key=lambda list2:list2[2])  #以最後乙個元素進行排序

list3

>>>[('d', 5), ('e', 6), ('f', 4)]

list4

>>>[(3, 'a', 2), (1, 'b', 3), (6, 'd', 5)]

#(使用cmp)

list5=sorted(list1,cmp=lambda x,y:cmp(x[0],y[0]))

list5

>>>[('d', 5), ('e', 6), ('f', 4)]

理解此處 cmp(x[0],y[0]):每次取list1中兩個元組的第乙個元素,進行兩兩比較,然後按大小排序。如list1=[('e',6),('d',5),('f',4)]  第一次取'e'和'd'兩兩比較大小,再排序,再取下乙個元組的第乙個元素依次比較下去,直到整個列表中的每個元組的第乙個元素都兩兩比較完則比較完畢。

使用opterator函式加快速度

import operator

list1=[('e',5),('d',8),('f',4)]

list6=sorted(list1,key=operator.itemgetter(0))

>>>[('d',8), ('e',5), ('f',4)]

使用opterator函式進行多級排序

import 

operator

list_sorted=sorted(list,key=operator.itemgetter(0,2))

#先根據第1個域排序,再根據第3個域排序。

eg:對包含字典的列表排序

list1=[,,]

list_sorted_1=sorted(list1,key=operator.itemgetter('name'))  #公升序

list_sorted_2=sorted(list1,key=lambda list1:list1['age'],reverse=true) #降序

list_sorted_1

>>>[, , ]

list_sorted_2

>>>[, , ]

python 列表排序 python列表排序有哪些

python列表排序 1 氣泡排序,是一種簡單的排序演算法,它重複地遍歷要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來 2 插入排序,通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。1 氣泡排序 氣泡排序 bubble sort 是一種簡單的排序...

python 列表排序

列表排序 s 1,2,3 s.reverse 倒序 s.sort 正序 sorted sorted iterable,cmp none,key none,reverse false new sorted list iterable 是可迭代型別 cmp 用於比較的函式,比較什麼由key決定,有預設值...

列表python排序

python題目 對列表 37,41.12,35,22,98,16,7,45,31 進行排序。這裡不考慮.sort 方法。usr bin env python coding utf 8 def merge left,right i,j 0,0result 左右列表元素對比大小,然後加1while i...