我正在閱讀Python的教程介紹,我一直在理解一段代碼。這是來自教程的第4.7.5節。Python初學者 - 使用lambda函數對元組進行排序
pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
pairs.sort(key=lambda pair: pair[1])
pairs
的碼,該位因此,在一個行返回
[(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
,它定義了與不同元組的列表對。我明白了。 第二行是我完全拋棄的地方,我已經做了相當多的修改,試圖瞭解發生了什麼。
我發現sort()正在向變量對應用一個內置函數,並且大概是按照我給它的指令對它進行排序。
sort()函數需要一個鍵,並且鍵必須使用函數定義,因此使用lambda。我認爲所有這些都是正確的,但我可能會離開這裏。
Lambda在冒號左側定義了一個新參數「pair」,右側是定義lambda函數返回值的計算。
這就是我被扔掉的地方。 「pair [1]」是做什麼的?它對結腸左側「對」的影響是什麼?
它返回什麼值?除了像這樣編碼之外,我似乎無法讓它返回任何價值。
我猜測它以某種方式指向特定的元組,並基於重新定位對它進行排序,但我不確定其背後的邏輯。
任何人都可以解釋這對我嗎?謝謝。
用'lambda'你可以引用你需要排序的值。 –
如果你第一次做'key = lambda pair:pair [1]',然後調用'key(pairs [0])',並將它與'key(pairs [1])'進行比較會有幫助嗎?如果我告訴你,最終結果按字母順序排列在每個元組的第二個元素上? –