iT邦幫忙

2024 iThome 鐵人賽

DAY 20
0

在Python中,lambda 函數是一種簡寫的匿名函數,通常用來定義簡單的、一次性使用的函數。與使用 def 定義的常規函數不同,lambda 函數沒有名稱(即匿名),而且只能寫成一行。它可以接受任意多的參數,但只能有一個表達式,該表達式的結果即為返回值。

壹、lambda 函數的語法

lambda arguments: expression
  • arguments: 函數的參數,與普通函數的參數一樣,可以是多個。
  • expression: 單個表達式,lambda 函數的結果會自動返回這個表達式的計算結果。

一、單個參數的 lambda 函數

# 定義一個簡單的 lambda 函數,將參數加 10
add_ten = lambda x: x + 10
result = add_ten(5)
print(f"5 加 10 的結果是: {result}")

這個 lambda 函數等價於:

def add_ten(x):
    return x + 10

二、例子:多個參數的 lambda 函數

# 定義一個 lambda 函數,將兩個數相加
add_two_numbers = lambda x, y: x + y
result = add_two_numbers(3, 4)
print(f"3 和 4 的和是: {result}")

這個 lambda 函數等價於:

def add_two_numbers(x, y):
    return x + y

貳、lambda 函數的應用場景

lambda 函數通常用在需要簡短的、臨時函數的場景,尤其是在其他函數的參數中,常與內建函數如 map()filter()sorted() 結合使用。

一、在 map() 中使用 lambda

map() 函數將一個函數應用到一個可迭代對象的每一個元素上,並返回結果。

numbers = [1, 2, 3, 4]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(f"平方后的數字列表: {squared_numbers}")

二、在 filter() 中使用 lambda

filter() 函數用來過濾可迭代對象,根據條件過濾出符合條件的元素。

numbers = [1, 2, 3, 4, 5, 6]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(f"偶數列表: {even_numbers}")

三、在 sorted() 中使用 lambda

sorted() 函數對列表進行排序,可以根據 key 參數提供的函數自定義排序邏輯。

# 按照元組的第二個元素進行排序
pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
sorted_pairs = sorted(pairs, key=lambda x: x[1])
print(f"根據第二個元素排序後的結果: {sorted_pairs}")

參、嵌套 lambda 函數

你也可以將 lambda 函數作為其他函數的返回值,這樣可以實現更靈活的應用。

def multiplier(n):
    return lambda x: x * n

doubler = multiplier(2)
result = doubler(5)
print(f"5 的兩倍是: {result}")

這裡,multiplier(2) 返回一個 lambda x: x * 2,相當於一個倍數函數。


上一篇
第19天:日期和時間
下一篇
第21天:Map和Filter
系列文
python30天入門學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言