1. 程式人生 > >Python3對一個class型別的list按class中某一屬性排序

Python3對一個class型別的list按class中某一屬性排序

寫作業的時候需要對一個point(x,y)型別的list按照point的x座標從小到大排序,於是去網上找了,但是並沒有找到如題的回答(其實有一個意思的回答但是我認為不是這個意思就沒注意看),然後就去找了屌屌的同學問這個玩意,然後我同學就甩給我了一個
def comp(self, a, b): 
if a.start>b.start:return 1 
elif a.start==b.start:return 0 
else : return -1 
intervals.sort(self.comp) 

這樣的東西,看起來很靠譜啊,嗯!就這麼弄,so easy!然後我在python3上面寫著python2,一樣的用法,一直報錯,你這個comp必須要有兩個引數啊,你自己寫的程式碼你不知道帶引數?報錯報錯。

就這個東西,想了我一個上午,我認為我寫的超級對啊,沒問題啊,為什麼,python針對我,

然後就一直上網搜啊,突然!!!

l.sort(key=lambda t:t.x)
這玩意怎麼看著???,這啥意思,我曹!!!我這python3啊,然後
例子3
預設sorted([True, False])==[False, True] (False=0 < True=1)
一個字串排序,排序規則:小寫<大寫<奇數<偶數
#元組內(e1, e2, e3)的優先順序排列為: e1 > e2 > e3
sorted(s, key=lambda x: (x.isdigit(),x.isdigit() and int(x) % 2 == 0,x.isupper(),x)
#input: 'asdf234GDSdsf23'
#output: 'addffssDGS33224'
1
2
3
4
5
x.isdigit()的作用是把數字放在後邊(True),字母放在前面(False).
x.isdigit() and int(x) % 2 == 0的作用是保證數字中奇數在前(False),偶數在後(True)。
x.isupper()的作用是在前面基礎上,保證字母小寫(False)在前大寫在後(True).
最後的x表示在前面基礎上,對所有類別數字或字母排序。

社會社會