Python lambda表達式的用途

V2YSJ 數碼 1

Python中的lambda表達式是一個匿名函數,它可以讓你在需要函數對象的地方使用一次性函數。

lambda函數的語法非常簡單:lambda關鍵字、參數、冒號和表達式。

lambda parameters: expression

下面是一個簡單的例子,它接受兩個參數並返回它們的和:

(lambda x, y: x + y)(10, 20)  # 輸出30

在這個例子中,我們定義了一個lambda函數,它接受兩個參數x和y,並返回x和y的和。然後我們調用這個lambda函數,並傳入值10和20。lambda表達式返回的結果就是這兩個值的和30。

作為一個函數對象,lambda函數可以作為另一個函數的參數傳遞。

def apply(func, x, y):
    return func(x, y)

apply(lambda x, y: x * y, 10, 20)  # 輸出200

在這個例子中,我們定義了一個apply函數,它接受三個參數:一個函數對象func、兩個參數x和y。當我們調用apply函數時,我們傳遞了一個lambda函數作為第一個參數,這個lambda函數會把x和y相乘後返回結果。

lambda函數還可以用於對列表、字典等數據類型進行操作。

例如,我們想要對一個列表進行排序,可以使用sort函數,並將lambda函數作為key參數傳遞。

fruits = ['apple', 'banana', 'orange', 'pear']
fruits.sort(key=lambda x: len(x))
print(fruits)  # 輸出['pear', 'apple', 'banana', 'orange']

在這個例子中,我們使用了sort函數對一個包含四種水果的列表進行排序。我們使用lambda函數作為key參數傳遞給sort函數,這個lambda函數指定了排序的關鍵字,即使用水果的名字的長度作為排序的依據。

另一個使用lambda函數的例子是對字典進行操作。例如,我們想要對一個字典按照值進行排序,可以使用sorted函數,並將lambda函數作為key參數傳遞。

fruits = {'apple': 3, 'banana': 2, 'orange': 4, 'pear': 1}
sorted_fruits = sorted(fruits.items(), key=lambda x: x[1])
print(sorted_fruits)  # 輸出[('pear', 1), ('banana', 2), ('apple', 3), ('orange', 4)]

在這個例子中,我們使用了sorted函數對一個包含四種水果的字典進行排序。我們使用lambda函數作為key參數傳遞給sorted函數,這個lambda函數指定了排序的關鍵字,即使用水果的數量作為排序的依據。

lambda函數的語法雖然簡單,但是要注意以下幾點限制:

lambda函數只能包含一個表達式,不能包含多個語句。因此,lambda函數比較適合於簡單的操作,無法進行複雜的操作。

lambda函數不能直接賦值給一個變量,但是可以作為一個匿名函數對象使用。

add = lambda x, y: x + y  # 報錯
add(10, 20)

在這個例子中,我們嘗試將一個lambda函數賦值給一個變量,但是會報錯。如果我們想要使用這個lambda函數,只能在代碼中直接使用它。

lambda函數不能作用於所有函數。例如,它不能用於類方法或實例方法中,因為它無法對類或實例進行訪問。

Python lambda表達式是一個非常方便的工具,可以用於編寫一次性函數、對列表、字典等數據類型進行排序、過濾等操作。但是要注意它的限制,不能進行複雜的操作,也不能直接賦值給一個變量。

回復

共1條回復 我來回復
  • 暫無回復內容