python中lambda函数的用法介绍

又称匿名函数lambda:是指一类无需定义标识符(函数名)的函数或子程序。
lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值。

语法:

lambda [arg1 [,arg2,.....argn]]:expression
  • args:函数将接收的参数
  • expression:结果为函数返回值的表达式

冒号前是参数,可以有多个,用逗号隔开,冒号右边的为表达式(只能为一个)。其实lambda返回值是一个函数的地址,也就是函数对象。

举例:将lambda函数赋值给一个变量,通过这个变量间接调用该lambda函数

def sum(x,y):
    return x+y
print(sum(1,2))

# 使用lambda函数:
sum = lambda x,y : x+y
print(sum(1,2))
# 没有了函数sum的定义,又称为匿名函数

由于它的简单性,lambda 函数可以使Python 代码在某些场景中更优雅。下面是Python 中 lambda 函数的5个常见用法。

命名使用

lambda_add_ten = lambda x: x + 10
print(lambda_add_ten(5))
# 15
 
def add_ten(x):
 return x + 10
print(add_ten(5))
# 15
# 两种方法结果相同,但 lambda 函数可以使代码更短更清晰。

与map()、 filter()和 reduce()等高阶函数配合

# 打印其中所有的奇数
numbers = [1, 12, 37, 43, 51, 62, 83, 43, 90, 2020]

# 初级的你
odd_number = []
for n in numbers:
   if n % 2 == 1:
   odd_number.append(n)
print(odd_number)
# [1, 37, 43, 51, 83, 43]

# 高级的你
odd_numbers = [i for i in numbers if i % 2 == 1]

# 优雅的你
print(list(filter(lambda x: x % 2 == 1, numbers)))
# [1, 37, 43, 51, 83, 43]

赋予key参数使用

使用 sorted()或 sort()方法对 Python 中的迭代进行排序时,关键参数决定如何比较迭代中的两个元素

leaders = ["Jerry", "Tom", "Jerry Zhang", "Edward Li"]
leaders.sort(key=lambda x: len(x))
print(leaders)
# ['Tom', 'Jerry', 'Edward Li', 'Jerry Zhang']
leaders = {4: "Edward Li", 2: "Tom", 3: "Jerry Zhang", 1: "Jerry"}
leaders = dict(sorted(leaders.items(), key=lambda x: x[0]))
print(leaders)
# {1: 'Jerry', 2: 'Tom', 3: 'Jerry Zhang', 4: 'Edward Li'}

直接调用

(lambda x,y:x*y)(2,3)
# 出于可读性和可维护性的考虑,最好只在 Python 的交互式解释器中使用这个技巧
# 如果熟悉python中的下划线技巧,也可使用一下方式
lambda x,y:x*y
# <function <lambda> at 0x7fc319102d30>
_(2,3)
# 6

闭包中使用

# 闭包栗子:
def outer_func():
   person = "Jerry"
   def print_person(location=""):
   return person + " in the " + location
   return print_person

Lead = outer_func()("China")
print(Lead)
# Jerry in the China

# 使用lambda简化上述代码
def outer_func():
   person = "Jerry"
   return lambda location="": person + " in the " + location
 
Lead = outer_func()("China")
print(Lead)
# Jerry in the China

总之,lambda 函数为提供了更多的灵活性和方法设计选项。熟悉常见用法,正确使用,不要过度使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值