2015-10-16 124 views
-4

我有下面的代碼無疑像我只是想知道如何任何人都可以解釋在Python中的lambda函數?

a.sort(key= lambda marks: marks[1]) 

功能能夠拍攝並再次返回嵌套列表。任何可以解釋這一點?

n=int(raw_input()) 
    a=[] 
    for i in range(n): 
     s=raw_input() 
     v=float(raw_input()) 
     a.append([s,v]) 
    a.sort(key= lambda marks: marks[1]) 
    print a 
+0

'sort'排序其元素。 'key'函數用於確定要排序的內容。哪一部分不清楚?什麼'lambda'是? 'sort'如何工作?... – Amadan

+0

這裏是一個嵌套列表的權利?所以通常用數字排序很容易理解..我想知道關於嵌套列表短路。 –

+0

這只是排序,就像任何其他。重點是要知道一個元素是大於還是小於另一個元素,這對於數字是顯而易見的;但在這裏,我們想按第二個元素排序,這就是'key'給我們的。 – Amadan

回答

1
a.sort(key= lambda marks: marks[1]) 

這相當於:

def getOneth(marks): 
    return marks[1] 

a.sort(k=getOneth) 

的想法是,a是可轉位的事情的清單。 a將通過第二件事值中的每個元素

編輯進行排序:如何lambdasort工作

如果要排序的事情的清單,從最小的說最大的,您需要評估每件事情。只有當你做這樣的評估時,你能夠決定哪些事情發生在其他事物之前/之後

現在,假設你有一個你想從最小到最大排序的數字列表。那麼,這很簡單 - 一個數字的價值是顯而易見的。但假設你想對一羣人進行排序 - 你可以按照每個人的身高,或者他們的名字,或者任何其他可測量的屬性對這個羣體進行排序。因此,當你有這樣的人的名單時,你需要告訴sort你將使用這樣的屬性。通過指定一個函數,key屬性允許您執行此操作。該函數將在列表中的每個元素上使用sort來計算元素的值。因此,該函數必然需要一個輸入參數並返回描述該輸入值的內容。由於我們不知道如何以及何時sort要評估每個列表元素,因此我們只提供它可以稍後調用的函數的名稱

+0

我們必須在「a.sort(k = getOneth)」中傳遞一些參數嗎? ..這個我不清楚..你能解釋嗎? –

+0

@Bee ..:檢查編輯 – inspectorG4dget