博文作者 wangzirui32
喜歡的可以 點贊 收藏 關注哦~~
我的第163篇原創作品
本文首發於CSDN,未經許可禁止轉載hello,大家好,我是wangzirui32,今天我們來學習Python中Lambda表達式,開始學習吧!
Lambda
在Python編程中使用的頻率非常高,這種表達式其實是Python中的一類特殊的定義函數的形式,使用它可以定義一個匿名函數。當你需要一個簡單功能的函數,Lambda
能滿足大部分需求。
Lambda語法格式如下:
lambda 參數1, 參數2, ...., 參數n: 執行語句
示例代碼:
# 計算x的三次方
f = lambda x: x**3
print(f(3))
輸出:
27
注意,lambda
語句中,冒號(:
)後執行一個表達式,不需要用return
返回結果,你可以使用if
語句:
# 判斷是否為偶數 是偶數返回True 否則返回False
f = lambda x: True if x % 2 == 0 else False
print(f(10))
print(f(11))
輸出:
True
False
也可以指定多個參數:
# 求x y z的平均值
f = lambda x, y, z: (x+y+z)/3
print(f(11, 45, 14))
輸出:
23.33333333333
現有如下列表:
students = [{
"name": "John", "age": 10, "score": 87},
{
"name": "Sally", "age": 9, "score": 100},
{
"name": "James", "age": 13, "score": 95}]
需求:將列表中的學生信息分別按年齡和分數進行排序。
我們可以使用lambda
表達式和排序函數達成需求,代碼:
students = [{
"name": "John", "age": 10, "score": 87},
{
"name": "Sally", "age": 18, "score": 100},
{
"name": "James", "age": 13, "score": 95}]
# 這裡的lambda返回學生的年齡作為排序依據
students.sort(key=lambda student: student['age'])
print("按年齡排序:", students)
# 這裡的lambda返回學生的分數作為排序依據
students.sort(key=lambda student: student['score'], reverse=True)
print("按分數排序:", students)
輸出結果:
按年齡排序: [{
'name': 'John', 'age': 10, 'score': 87}, ......]
按分數排序: [{
'name': 'Sally', 'age': 18, 'score': 100}, ......]
現有如下列表:
numbers = [1, 2, 3, 4, 5, 6, 7]
需求:將列表內的所有數字元素全部執行一次立方操作。
我們可以結合map
函數達成需求,代碼:
numbers = [1, 2, 3, 4, 5, 6, 7]
# 這裡的lamdba返回x的立方
new_numbers = list(map(lambda x: x**3, numbers))
print(new_numbers)
輸出:
[1, 8, 27, 64, 125, 216, 343]
map
函數可以用來映射序列,調用參數如下:
map(映射函數, 序列列表)
映射過程類似於:
現有如下列表:
numbers = [11, 4, 5, 14, 10, 32, 50, 19, 20]
需求:過濾出列表中10以上的偶數。
我們可以使用filter
內置函數,代碼:
numbers = [11, 4, 5, 14, 10, 32, 50, 19, 20]
new_numbers = list(filter(lambda x: x % 2 == 0 and x >= 10, numbers))
print(new_numbers)
輸出:
[14, 10, 32, 50, 20]
在這個lambda
表達式內,我們限定了條件x % 2 == 0 and x >= 10
,如果2個條件都滿足,表達式結果為True
,否則為False
。
整個過程類似於:
現有如下列表:
students = ["John", "Jack", "James", "Malfoy", "Sally"]
需求:將每兩個學生姓名之間添上","連接並輸出。
我們可以使用reduce
函數,代碼:
from functools import reduce
students = ["John", "Jack", "James", "Malfoy", "Sally"]
print(reduce(lambda a, b: "{} , {}".format(a, b), students))
輸出:
John , Jack , James , Malfoy , Sally
當一個函數返回lambda
匿名函數時,這就類似於Python中的函數裝飾器了,示例代碼:
def welcome_text(text):
return lambda username: "Welcome {}!\n{}".format(username, text)
welcome_user = welcome_text("這裡是wangzirui32的編程課堂!")
print(welcome_user("Malfoy"))
輸出:
Welcome Malfoy!
這裡是wangzirui32的編程課堂!
好了,今天的課程就到這裡,我是wangzirui32,喜歡的可以點個收藏和關注,我們下次再見!