為什么L2里只比較P1P2
class Person(object):
? ? pass
p1 = Person()
p1.name = 'Bart'
p2 = Person()
p2.name = 'Adam'
p3 = Person()
p3.name = 'Lisa'
L1 = [p1, p2, p3]
L2 = sorted(L1, lambda p1, p2: cmp(p1.name, p2.name))
print L2[0].name
print L2[1].name
print L2[2].name
2020-06-05
sorted()可以傳入特定的函數,實現自定義的排序。二這個特定的函數要求是要傳入兩個用來比較的元素。所以,示例中為p1.name, p2.name。你也可以換成x,y。 sorted(L1,lambda x,y comp(x,y))。注:cmp()函數用于比較兩個對象,如果x<y,返回-1,x=y返回0,x>y返回1。
2020-03-13
sorted(L1, lambda p1, p2: cmp(p1.name, p2.name))
p1, p2只是代表兩個參數,可以改成其他任意參數,比如lambda x, y : cmp(x.name, y.name)
它的意思是陸續從L1中獲取對象,然后比較兩個對象的屬性name來進行排序。