『無為則無心』Python函數 — 34、lambda錶達式

繁華似錦Fighting 2022-01-07 19:59:17 阅读数:405

python lambda

lambda錶達式的主要作用就是化簡代碼。

匿名函數一般都是作為參數使用,其他地方一般不會使用。

1、lambda的應用場景

如果一個函數有一個返回值,並且只有一句代碼,可以使用lambda簡化。

2、lambda語法

lambda 參數列錶 : 錶達式

注意:

  • lambda錶達式的參數可有可無,函數的參數在lambda錶達式中完全適用。
  • lambda錶達式能接收任何數量的參數但只能返回一個錶達式的值。

3、快速入門

# 函數
def fn1():
return 200
print(fn1) # <function fn1 at 0x0000000002665948>
print(fn1()) # 200
# lambda錶達式
# lambda 參數列錶: 錶達式
fn2 = lambda: 100
print(fn2) # <function <lambda> at 0x00000000026658B8>
print(fn2()) # 100

注意:直接打印lambda錶達式,輸出的是此lambda的內存地址。

圖示如下:

image

4、示例:計算a + b

(1)函數實現

def add(a, b):
return a + b
result = add(1, 2)
print(result) # 3

思考:需求簡單,是否代碼多?

(2)lambda實現

fn1 = lambda a, b: a + b
print(fn1(1, 2)) # 3

5、lambda的參數形式

(1)無參數

fn1 = lambda: 100
print(fn1()) # 100

(2)一個參數

fn1 = lambda a: a
print(fn1('hello world')) # hello world

(3)默認參數

fn1 = lambda a, b, c=100: a + b + c
print(fn1(10, 20)) # 130
print(fn1(10, 20, 200)) # 230

(4)可變參數:*args

fn1 = lambda *args: args
print(fn1(10, 20, 30)) # (10, 20, 30)
print(fn1(10)) # (10,)

注意:這裏的可變參數傳入到lambda之後,返回值為元組。

(5)可變參數:**kwargs

fn1 = lambda **kwargs: kwargs
print(fn1(name='Python')) # {'name': 'Python'}
print(fn1(name='python', age=20)) # {'name': 'python', 'age': 20}

注意:這裏的可變參數傳入到lambda之後,返回值為字典。

6、lambda的應用

(1)帶判斷的lambda

# 需求:比較兩個數大小,誰大返回誰
fn1 = lambda a, b: a if a > b else b
print(fn1(1000, 500))

(2)列錶數據按字典key的值排序

students = [
{'name': 'TOM', 'age': 20},
{'name': 'ROSE', 'age': 19},
{'name': 'Jack', 'age': 22}
]
# 按name值昇序排列(x錶示昇降序的元素,這裏是字典變量)
students.sort(key=lambda x: x['name'])
print(students)
# 按name值降序排列(reverse=True 降序)
students.sort(key=lambda x: x['name'], reverse=True)
print(students)
# 按age值昇序排列
students.sort(key=lambda x: x['age'])
print(students)
版权声明:本文为[繁華似錦Fighting]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201071959170326.html