1、lambda函数基本用法
在进行编程时,我们一般会给一个函数起一个名字,但又不想费神去命名它的时候,就可以使用匿名函数。该匿名函数就是Python中的Lambda函数,是一种快速定义简单函数的方法。例如:
动手练一练:
def sum(a, b):
return a + b
print(sum(2, 3)) # 输出 5
print("-------这是虚线-------")
add = lambda a, b: a+b
print(add(4, 5)) # 输出 9
执行以上代码,输出结果为:
5
-------这是虚线-------
9
上面的例子中,sum函数的作用是返回两个参数“a”和“b”的和,改写成lambda表达式就是“lambda a, b: a+b”,与常规函数不同,Lambda函数没有函数名,我们将lambda函数赋值给变量add,通过变量add间接调用该lambda函数。
在Python中,Lambda函数的语法非常简单,它由关键字lambda开头,表示这是个lambda表达式。之后的内容由冒号“:”分为两部分:冒号“:”左边的是函数的参数,多个参数使用逗号分隔,在例子中就是“a”和“b”两个参数,与定义一般函数时括号中的参数类似。冒号“:”右边的就是要返回的值,lambda表达式不需要用“return”关键字返回内容,函数默认会返回冒号“:”右边的值。
2、Lambda函数的应用场景
lambda函数在Python编程中使用的频率非常高,通常用于需要快速定义简单函数的场景,例如:
-
(1)程序只执行一次,不需要定义函数名,使用lambda表达式方便定义,并且节省了内存中变量的定义;
-
(2)在某些函数中必须以函数作为参数,但是函数本身十分简单而且只在一处使用。
如果我们将lambda函数与filter()、map()和reduce()等高阶函数一起使用,那么程序将变得更加简便,下面以filter()方法为例:
动手练一练:
# 打印其中所有的奇数
# 首先定义一个列表a
a = [5, 8, 11, 56, 29, 43, 77, 104, 2024]
# 初级程序员方法
b = []
for n in a:
if n % 2 == 1:
b.append(n) # append()函数用于在b列表末尾添加新的元素
print(b) # 输出 [5, 11, 29, 43, 77]
print("-------这是虚线-------")
# 高级程序员方法
print(list(filter(lambda x: x % 2 == 1, a))) # 输出 [5, 11, 29, 43, 77]
上面的例子中,给出一个列表“a”,使用两种方法打印其中所有的奇数,这个问题看起来很简单,但是使用lambda表达式只需要一行代码就可以做同样的事情。其中filter()函数可以用于对序列元素进行过滤,将a列表中符合条件的元素保留下来,从而得到一个新的序列,再使用list()函数来转换为列表。
lambda表达式还可以结合map函数使用,例如:
动手练一练:
# 初级程序员计算平方数
a = [1, 2, 3, 4, 5]
def square(x):
return x ** 2
print(list(map(square, a))) # 输出 [1, 4, 9, 16, 25]
print("-------这是虚线-------")
# 高级程序员计算平方数
print(list(map(lambda x: x ** 2, a))) # 输出 [1, 4, 9, 16, 25]
执行以上代码,输出结果为:
[1, 4, 9, 16, 25]
-------这是虚线-------
[1, 4, 9, 16, 25]
上面的例子中,给出一个列表“a”,使用两种方法计算出列表中各个元素的平方,使用lambda表达式只需要一行代码就可以做同样的事情。其中map()函数用于遍历列表“a”中所有的元素,并分别以列表“a”中的每一个元素调用lambda函数,返回包含每次lambda函数返回值的新序列,再使用list()函数来转换为列表。