Lambda 函數,也稱為匿名函數,是一種在單行內定義的小函數。它沒有固定的名稱,通常用於一些簡單的運算,不需要定義一個完整的函數。
lambda arguments: expression
# 傳統函數寫法
def square(x):
return x * x
# Lambda 函數寫法
square = lambda x: x * x
# 兩者效果相同,都可以計算一個數的平方
print(square(5)) # 输出 25
map(function, iterable)
numbers = [1, 2, 3, 4]
squared = list(map(lambda x: x*x, numbers))
print(squared) # 输出 [1, 4, 9, 16]
filter(function, iterable)
numbers = [1, 2, 3, 4, 5]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # 输出 [2, 4]
sorted(iterable, key=None, reverse=False)
fruits = ['banana', 'apple', 'orange']
sorted_fruits = sorted(fruits, key=lambda x: x[-1])
print(sorted_fruits) # 输出 ['banana', 'orange', 'apple']
最終的排序結果是按照水果名稱的最後一個字母的字母序x[-1]進行排序的。
iterable: 要排序的可迭代物件。
key: 一個自訂的函數,用來指定排序的依據。這個函數會對每個元素進行操作,並傳回一個值,排序就是根據傳回的值進行的。
reverse: 一個布林值,指定排序順序。 True 表示降序,False 表示升序(預設)。
作為參數傳遞:
fruits = ['banana', 'apple', 'orange']
sorted_fruits = sorted(fruits, key=lambda x: x[-1])
print(sorted_fruits) # 输出 ['banana', 'orange', 'apple']
不曉得你有沒有發現,在map、filter 和 sorted 中 iterable 的位置有點不同?
map(function, iterable)
-sorted:sorted(iterable, key=None, reverse=False)
iterable 放在 key(排序的依据)的前面。
这是因为 sorted 的主要目的是对序列iterable进行排序,而 key 是一个可选参数,用于指定排序的依据。
簡單的運算: 對於一些簡單的運算,如平方、求絕對值等,Lambda 函數非常適合。
作為回調函數: 在使用一些庫函數時,需要傳入一個函數作為參數,Lambda 函數可以簡化寫法。
與高階函數結合: map、filter、sorted 等高階函數與 Lambda 函數配合使用,可以寫出非常簡潔的程式碼。
Lambda 函數作為 Python 的一個重要特性,可以讓程式碼更加簡潔和靈活。但過度使用 Lambda 函數也可能降低程式