因是c++acmer,故經常用到自定義排序
因為所有比較都可通過小於號的結果進行推導
class
dch:
def__init__
(self,a,b)
: self.first=a
self.second=b
def__str__
(self)
:return
"first={},second={}"
.format
(self.first,self.second)
def__lt__
(self, other):if
(self.first == other.first)
:return
int(self.second < other.second)
return
int(self.first < other.first)
# isinstance(100,int)
aa=dch(1,
2)bb=dch(
100,1)
cc=dch(50,
50)dd=dch(30,
-1)ee=dch(1,
20)mylist=
[aa,bb,cc,dd,ee]
mylist=
sorted
(mylist)
#sorted函式返回對list排序的結果,預設是穩定的歸併排序
for i in
range
(len
(mylist)):
print
(mylist[i]
)
列表也有內建函式sort,這是官方的解釋
sort
(***, key=none, reverse=false)此方法會對列表進行原地排序,只使用
<
來進行各項間比較。 異常不會被遮蔽 —— 如果有任何比較操作失敗,整個排序操作將失敗(而列表可能會處於被部分修改的狀態)。
sort()
接受兩個僅限以關鍵字形式傳入的引數 (僅限關鍵字引數):
first=1,second=2可以參考python的官網文件:first=1,second=20
first=30,second=-1
first=50,second=50
first=100,second=1
class
pair
:def
__init__
(self,x=
0,y=0)
: self.x=x
self.y=y
def__lt__
(self, other)
:if self.x==other.x:
return self.yreturn self.x-self.y
def__str__
(self)
:return
"%d,%d"
%(self.x,self.y)
me=3
,4))
1,3)
)-1,
-1))
me.sort(key=
lambda x:
(x.y)
)for i in me:
print
(i)#輸出:
#-1,-1
#1,3
#3,4
lambda表示式的結果可返回乙個元組,按照對元素為元組的陣列排序則預設字典序排序。
class
pair
:def
__init__
(self,x=
0,y=0)
: self.x=x
self.y=y
def__str__
(self)
:return
"{} {}"
.format
(self.x,self.y)
if __name__ ==
'__main__'
: mmp=
1,2)
)0,2
))4,
5))7
,8))
4,3)
) mmp.sort(key=
lambda me:
(me.x,me.y)
)#這樣就會按照元組的字典序進行排序
for i in mmp:
print
(i)'''
輸出0 2
1 2
4 3
4 5
7 8
'''#
python列表的排序
列表排序有三種方法 reverse 方法 sort 方法 sorted 方法。1.reverse 列表反轉排序。把原列表中的元素順序從左至右反轉過來重新存放,而不會對列表中的引數進行排序整理,即不會根據大小排序。eg list1 d 6,e 5,f 4 list1.reverse list1 4,f...
python 列表排序 python列表排序有哪些
python列表排序 1 氣泡排序,是一種簡單的排序演算法,它重複地遍歷要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來 2 插入排序,通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。1 氣泡排序 氣泡排序 bubble sort 是一種簡單的排序...
python自增列表 字典中的列表自增問題求教
import easygui as g import os codingdict typedict linecountdict def choicecounttype 選擇要統計哪些 檔案型別 global codingdict global typedict global linecountdic...