導航:首頁 > 編程語言 > python類別排序

python類別排序

發布時間:2022-12-21 08:07:59

python 內置排序函數使用

python內置關於排序的工具主要有兩個一個是列表自帶的 sort() 方法,另外一個是 sorted() 函數。Python 列表內置方法可以直接修改列表。而 sorted() 內置函數從一個可迭代對象(列表,元組等都可以)構建一個新的排序列表。其函數原型分別如下:

對列表進行默認排序

從函數原型來看,可以看到兩者都具有兩個可選參數,它們都必須指定為關鍵字參數。
key 指定帶有單個參數的函數,用於從 iterable 的每個元素中提取用於比較的鍵 (例如 key=str.lower)。默認值為 None (直接比較元素)。 key 形參的值應該是個函數(或其他可調用對象),它接受一個參數並返回一個用於排序的鍵。

假設有其他類型的變數,比如一個自定義的類或者列表中又是一個列表。以官網例子為例有這樣一個列表,其元素為元組,

可以用以下方式按照年齡排序

類似的有自定義類

可以用如下方式進行排序

也可以顯示定義一個函數,且只有一個參數,返回用於排序的鍵,比如

總之就是定義一個函數返回一個用於排序的鍵,可以用lambda函數或者 def 定義都可以。

上面實現的簡單函數實際就是實現了返回一個有序結構的第 n 的元素,或者某個類中的某個屬性,因此 Python 提供了便利功能,使訪問器功能更容易,更快捷。operator 模塊有 itemgetter() 、 attrgetter() 函數。分別完成返回第 n 個元素,某個屬性功能。上面的排序可以用如下方式進行實現

在python2中,sort有一個 cmp 參數,即用一個函數來自定義比較,在python3中這種方式被取消。為了繼承類似的用法,在 Python 3.2 中, functools.cmp_to_key() 函數被添加到標准庫中的 functools 模塊中。
這種作用先定義如何比較兩個變數,以上面的學生列表按照年齡排序為例

這種做法自定義比較函數接收兩個形參,返回比較結果(bool),而新式方法接受一個參數,返回的是比較的鍵。

假設有字典 d = {'b':2, 'a':1,'c':8,'d':4} ,則可以通過以下方式對字典按照鍵和值進行排序

Ⅱ python怎麼升序和降序排序

python怎麼升序和降序排序
推薦:《python視頻教程》
1、首先打開cmd命令提示符,輸入指令「ipython」打開python的命令行工具:
2、在命令行中先定義一個變數number數組,裡面寫入幾個數,並用sorted函數對number排序並將排序的結果賦值給變數a,sorted函數第一個參數是要排序的參數,第二個是固定參數reverse表示倒序,True為開啟:
3、最後列印輸出a標量,就是降序輸出了:
更多相關問題,請關注PHP中文網!以上就是小編分享的關於python怎麼升序和降序排序的詳細內容希望對大家有所幫助,更多有關python教程請關注環球青藤其它相關文章!

Ⅲ python列表排序方法

列表的sort方法就是用來進行排序的。

主要就是兩個參數,key,reverse


先說reverse,這個很簡單,就是指出是否進行倒序排序:一般情況下,1排在2的前面,而倒序則相反。


key參數:一般它是一個函數,它接受列表中每一個元素,返回一個可用用於比較的值。

s=[1,2,3,4,5]

s.sort(key=lambda _: _**2%7)

print(s)

輸出的是:[1, 3, 4, 2, 5]

如果看不懂lambda表達式,可以看這一段等價的寫法:

def myfn(x):

....return (x * x) % 7


s=[1,2,3,4,5]

s.sort(key=myfn)

print(s)

輸出的結果是一樣的。

key使用的函數可以是自定義函數也可以pytho內置的函數,或者是某個類或者實例的方法,只要它能接受一個參數,返回一個可比較的值即可。比如這樣:

s=[[1,2,4],[3,3,5],[1,1,1],[5,7,9]]

s.sort(key=max) # 直接使用max函數作為排序依據

print(s)

[[1, 1, 1], [1, 2, 4], [3, 3, 5], [5, 7, 9]]


Ⅳ python2 自定義排序規則如何排序

#分類函數
defselect(i):
return(i%3>0)and(i%2==0)
#不同分類的排序演算法
sort_funcs={
#升序
True:lambdalst:sorted(lst,reverse=False),
#降序
False:lambdalst:sorted(lst,reverse=True)
}

#混合排序
defmix_sort(arr,select,sort_funcs):
sequence={key:iter(func(vfori,vinenumerate(arr)ifselect(i)==key))forkey,funcinsort_funcs.iteritems()}
return[next(sequence[select(i)])fori,_inenumerate(arr)]

#輸出
arr=[0,1,2,3,4,5,6,7,8,9]
printmix_sort(arr,select,sort_funcs)

>>[9,7,2,6,4,5,3,1,8,0]

arr=[1,5,4,3,10,7,19]
printmix_sort(arr,select,sort_funcs)

>>[19,7,4,5,10,3,1]

在 arr =[0,1,2,3,4,5,6,7,8,9] 中,下標和值相同,比較好說明

arr 中 [2, 4, 8] 符合 「不能被 3 但可以被 2 整除」,升序為 [2, 4, 8]

arr 中 [0, 1, 3, 5, 6, 7, 9] 不符合「不能被 3 但可以被 2 整除」,降序為 [9, 7, 6, 5, 4, 1, 0]

按原先的位置組合,結果為[9,7,2,6,4,5,3,1,8,0]


不知道我理解得對不對

Ⅳ python分類演算法有哪些

常見的分類演算法有:

Ⅵ python排序!

方法1.用List的內建函數list.sort進行排序
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]
方法2.用序列類型函數sorted(list)進行排序(從2.4開始)
Python實例:

>>> list = [2,5,8,9,3]
>>> list
[2,5,8,9,3]
>>> sorted(list)
[2, 3, 5, 8, 9]
兩種方法的區別:
sorted(list)返回一個對象,可以用作表達式。原來的list不變,生成一個新的排好序的list對象。
list.sort() 不會返回對象,改變原有的list。
其他sort的實例:
實例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)]
為什麼實例8能夠工作呢?原因在於tuple是的比較從左到右比較的,比較完第一個,如果相等,比較第二個

Ⅶ python字母順序排序

Ⅷ python中對組合數據類型x進行排序的內置函數是

python有兩個內置的函數用於實現排序,一個是list.sort()函數,一個是sorted()函數。
區別1:list.sort()函數只能處理list類型數據的排序;sorted()則可以處理多種類型數據的排序。
區別2:list.sort()會修改原來的list為排序後的結果;sorted()不會修改原來的數據,只是返回一個排序後的對象。
下面來動手寫點代碼進行測試:
list進行簡單的排序
1 >>>a=['a','f','c','x','e']2 >>>a.sort()3 >>>a4 [a','c','e','f','x']
sorted()進行簡單排序
1 >>>a=['a','f','c','x','e']2 >>>a_new=sorted(a)3 >>>a_new4 ['a', 'c', 'e', 'f', 'x']
list.sort()和sorted都有默認的參數reverse,該參數的默認值為「False」,即默認升序排列。如果要進行降序排列:
1 >>>a=['a','f','c','x','e']2 >>>a_new=sorted(a,reverse=True)3 >>>a_new4 ['x', 'f', 'e', 'c', 'a']
對元組進行排列,不能使用list.sort()函數:
1 >>>a=('a','f','c','x','e')2 >>>a_new=a.sort()3
4 ttributeError: 'tuple' object has no attribute 'sort'
對字典的排序可以按照字典的key或者value進行排序:
1 >>>dic={"aa":11,"ff":5,"ee":22}2 >>>printsorted(dic.keys())3 ['aa', 'ee', 'ff']
從python2.4開始list.sort()和sorted()都引入了key參數來指定一個函數進行排序,有了key參數以後我們就可以對更加復雜的數據進行排序 。
假如需要排序的數據為一個list,但list的每一個元素都是一個字典,排序的方法如下:
>>>dic=[{"name":"sunny","age":20},
{"name":"bell","age":5},
{"name":"jim","age":1},
{"name":"jan","age":10}]>>>print sorted(dic,key=lambda arg:arg.get('age'),reverse=False) #按照每個字典的age的值進行排序,字典的方法dict.get(key)將返回指定鍵的值。
#輸出結果為:[{'age': 1, 'name': 'jim'}, {'age': 5, 'name': 'bell'}, {'age': 10, 'name': 'jan'}, {'age': 20, 'name': 'sunny'}]
>>>print sorted(dic,key=lambda arg:arg.get('name'),reverse=False) #按照每個字典的name的值進行排序
#輸出結果為:[{'age': 5, 'name': 'bell'}, {'age': 10, 'name': 'jan'}, {'age': 1, 'name': 'jim'}, {'age': 20, 'name': 'sunny'}]
假如需要排序的數據為一個二維的list,即list的每一個元素也是一個list,方法與上面的例子類似:
>>>a=[['100','8','30'],['200','5','50'],['300','1','20']]>>>print sorted(a,key=lambda arg:arg[1]) #按照每個list的第1個元素進行排序
[['300', '1', '20'], ['200', '5', '50'], ['100', '8', '30']]
前面的2個例子中,key參數的值都是函數。在sorted函數中,key參數後面的函數的參數的數量只能是一個。lambda arg:arg.get('age')是一個lambda匿名函數,它是一個沒有函數名的單語句函數。冒號左邊是參數,冒號右邊的返回值,返回值將被用於排序。

Ⅸ python字典怎麼排序

python字典怎麼排序?
定義一個字典類型
mydict = {2: '小路', 3: '黎明', 1: '郭富城', 4:'周董'}
可分別列印 key和value 看一下數據
按KEY排序,使用了 lambda和 reverse= False(正序)
key和value都輸出
reverse= True(逆序)
按value排序,漢字次序不是按拼音輸出
sorted並不改變字典本身的數據次序。
輸出後為列表和元組
可以 A = sorted(mydict.items(),key = lambda mydict:mydict[1],reverse= False) 賦值給A ,A的次序是變化後的
推薦:《Python教程》
注意事項
sorted並不改變字典本身的數據次序
如果要變化後的 可以賦值給另一個列表變數以上就是小編分享的關於python字典怎麼排序的詳細內容希望對大家有所幫助,更多有關python教程請關注環球青藤其它相關文章!

Ⅹ Python有哪些種類

Python有哪些種類?

1、數值型(Numbers)

2、布爾型(Booleans)

3、字元串(String)

4、Python容器

要快速學會Python,謹記『3個』『4類』『5大』『6種』這四個數字就可以了。

三個基本概念

1. 結構化(函數、模塊、包)

2. 面向對象(類及派生類、重載)

3. 虛擬環境(版本管理、環境隔離)

四類基本操作

1. 數據操作(各種數據類型的操作)

2. 文件操作(文件打開讀寫關閉等操作)

3. 模塊操作(導入使用、模塊查尋等操作)

4.並發操作(進程與線程、鎖/信號號/安全隊列等)

五大基本語句(5)

1. 賦值語句(變數、對象、賦值運算符)

2. 輸入輸出語句(print, input函數)

3. 條件判斷語句(if-elif-else語句)

4. 循環語句(遍歷循環for-in-else、條件循環while-else、break/continue)

5. 異常處理語句(try-except-else-finally)

六種數據類型(6)

1. 數字類型(int,bool,float,complex)

2. 字元串(str)

3. 列表(list)

4. 元組(tuple)

5. 字典(dict)

6. 集合(set)

如果你能夠把上面的幾個要點都掌握了,那麼就算是真正地入門了。

閱讀全文

與python類別排序相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:485
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:382
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163