Lambda 函式

Intermediate Python for Developers

Jasmin Ludolf

Senior Data Science Content Developer

簡單函式

def average(values):
    average_value = sum(values) / len(values)
    return average_value
Intermediate Python for Developers

Lambda 函式

  • lambda 關鍵字
    • 代表「匿名函式」

 

lambda
Intermediate Python for Developers

Lambda 函式

  • lambda 關鍵字
    • 代表「匿名函式」

 

lambda arguments
Intermediate Python for Developers

Lambda 函式

  • lambda 關鍵字
    • 代表「匿名函式」

 

lambda arguments:
Intermediate Python for Developers

Lambda 函式

  • lambda 關鍵字
    • 代表「匿名函式」

$$

lambda arguments: expression
  • 慣例:單一引數用 x
  • expression 相當於函式主體
  • 不需要 return 陳述式

$$

  • 可以 指派給變數
Intermediate Python for Developers

建立 lambda 函式

# Lambda 平均值函式
print(lambda x: sum(x) / len(x))



<function <lambda> at 0x7f11ab813d80>
# 自訂平均值函式
def average(x):
    return sum(x) / len(x)  

print(average)
<function average at 0x7f11ab813ec0>
Intermediate Python for Developers

使用 lambda 函式

# 取得平均值
(lambda x: sum(x) / len(x))
Intermediate Python for Developers

使用 lambda 函式

# 取得平均值
(lambda x: sum(x) / len(x))([3, 6, 9])

$$

$$

# 印出平均值
print((lambda x: sum(x) / len(x))([3, 6, 9]))
6.0
Intermediate Python for Developers

儲存與呼叫 lambda 函式

# 將 lambda 函式存成變數
average = lambda x: sum(x) / len(x)

# 呼叫平均值函式 print(average([3, 6, 9]))
6.0
Intermediate Python for Developers

多個參數

# 具有兩個引數的 lambda 函式
power = lambda x, y: x**y


# 計算 2 的 3 次方 print(power(2, 3))
8
Intermediate Python for Developers

搭配可疊代物件的 lambda 函式

  • map() 會將函式套用到可疊代物件中的「所有」元素
names = ["john", "sally", "leah"]

# 在 map() 中套用 lambda 函式 capitalize = map(lambda x: x.capitalize(), names)
print(capitalize)
<map object at 0x7fb200529c10>
# 轉成清單
print(list(capitalize))
['John', 'Sally', 'Leah']
Intermediate Python for Developers

自訂 vs. lambda 函式

情境 函式類型
任務複雜 自訂
重複同一任務 自訂
只做一次 Lambda
任務單純 Lambda
Intermediate Python for Developers

一起來練習吧!

Intermediate Python for Developers

Preparing Video For Download...