1. 程式人生 > >Python中資料的排序

Python中資料的排序

目錄

列表的排序

列表的排序

列表的排序可以使用列表自帶的 sort()  方法,也可以使用 sorted() 函式

sort() 方法是修改原列表;而 sorted() 函式是對列表的複製再排序,返回一個新的列表,兩者有區別。

sort(key,reverse)方法 

對於列表中的元素是數字的話,預設是按照大小排序

>>a=[3,1,6,2,-4,7]
>>a.sort()                    //從小到大
>>print(a)
[-4, 1, 2, 3, 6, 7]
>>a.sort(reverse=Ture)        //倒序,從大到小
>>print(a)
[7, 6, 3, 2, 1, -4]

還可以傳入引數 key,key引數是對要排序的資料的操作
>>a.sort(key=lambda x:abs(x))
>>print(a)
[1, 2, 3, -4, 6, 7]

對於列表中元素是字串的話,預設是按照 元素第一個字母的ASCII 值來排序 

>>a=['day','Back','alice','Change']
>>a.sort()                     //預設是安裝第一個字母的ASCII值排序
>>print(a)
['Back', 'Change', 'alice', 'day']
>>a.sort(key=str.lower)        //不區分第一個字母的大小寫排序
>>print(a)
['alice', 'Back', 'Change', 'day']

sorted(target,key,reverse) 函式

對於列表中的元素是數字的話,預設是按照大小排序

>>a=[3,1,6,2,-4,7]
>>b=sorted(a)
>>print(b)
[-4, 1, 2, 3, 6, 7]           //從小到大
>>c=sorted(a,reverse=True) 
[7, 6, 3, 2, 1, -4]           //倒序,從大到小
>>d=sorted(a,key=lambda x:abs(x))
[1, 2, 3, -4, 6, 7]

對於列表中元素是字串的話,預設是按照 元素第一個字母的ASCII 值來排序  

>>a=['day','Back','alice','Change']
>>b=sorted(a)                   //預設是安裝第一個字母的ASCII值排序
>>print(b)
['Back', 'Change', 'alice', 'day']  
>>c=sorted(a,key=str.lower)    //不區分第一個字母的大小寫排序
>>print(c)
['alice', 'Back', 'Change', 'day']

元組tuple的排序

sort(key,reverse)方法

元組自身沒有 sort() 排序方法,要對元組用 sort() 進行排序,我們可以先將元組轉換成list 列表,然後排序,最後再轉換成元組。

>>a=(3,1,6,2,-4,7)
>>b=list(a)
>>b.sort()      //也可以傳入key和reverse引數
>>a=tuple(b)
>>print(a)
(-4, 1, 2, 3, 6, 7)

sorted(target,key,reverse)函式 

>>a=(3,1,6,2,-4,7)
>>b=sorted(a)        //也可以傳入key和reverse引數
>>print(b)
[-4, 1, 2, 3, 6, 7]

字串的排序

python中的字串型別是不允許直接修改元素的。必須先把要排序的字串放在容器裡,如 list 。然後再利用 list 的 sort() 方法排序

>>a="hello,word!"
>>b=list(a)
>>b.sort()
>>print(b)
['!', ',', 'd', 'e', 'h', 'l', 'l', 'o', 'o', 'r', 'w']
>>c="".join(b)
>>print(c)
!,dehlloorw

或者直接一行搞定
>>a="hello,word!"
>>s="".join((lambda x:(x.sort(),x)[1])(list(s)))
>>print(s)
!,dehlloorw

或者利用 sorted() 函式
>>a="hello,word!"
>>b=sorted(a)
>>print(b,type(b))
['!', ',', 'd', 'e', 'h', 'l', 'l', 'o', 'o', 'r', 'w'] <class 'list'>
>>c="".join(b)
>>print(c)
!,dehlloorw

 字典的排序