Python匿名函数(lambda函数)的用法
Python中的lambda函数也被称为匿名函数,它是一种没有名称的函数,可以直接传递给其他函数或对象。Lambda函数通常用于函数式编程,它们可以用于过滤元素,对元素进行转换以及排序等操作。
Lambda函数的语法:
lambda arguments: expression
其中,arguments是lambda函数中的参数,expression是lambda函数中的表达式。lambda函数的表达式只能在一行中,不能包含多个语句。Lambda函数返回一个函数对象,可以将其赋给一个变量,并使用该变量调用lambda函数。
下面是一个简单的lambda函数例子:
square = lambda x: x**2 print(square(3)) #输出9
在这个例子中,我们定义了一个lambda函数,用来计算一个数的平方。我们将该函数赋给一个名为square的变量,并使用该变量调用该lambda函数,计算3的平方并将其打印到控制台中。
Lambda函数可以与内置函数一起使用,例如filter()、map()和reduce()等函数,这些函数可以通过使用lambda函数来简化代码。下面让我们看一下如何使用lambda函数和这些内置函数。
filter()函数:filter()函数用于过滤序列,只保留符合条件的元素。它接受两个参数: 个参数是一个函数,用于对序列中的每个元素进行测试,第二个参数是序列,需要过滤。
下面是一个例子,演示如何使用lambda函数和filter()函数来过滤列表中的偶数:
lst = [1, 2, 3, 4, 5, 6] even_lst = list(filter(lambda x: x%2 == 0, lst)) print(even_lst) #输出[2, 4 and 6]
在这个例子中,我们使用lambda函数定义了一个函数,该函数用于检查一个数是否是偶数。我们将该函数作为 个参数传递给filter()函数,并将列表lst作为第二个参数传递。filter()函数将会返回一个新列表,其中只包含符合条件的元素,也就是偶数。
map()函数:map()函数用于将序列中的每个元素应用到函数,并将结果作为新列表返回。它接受两个参数: 个参数是一个函数,用于对序列中的每个元素进行操作,第二个参数是序列,需要应用该函数。
下面是一个例子,演示如何使用lambda函数和map()函数来将列表中的所有元素平方:
lst = [1, 2, 3, 4, 5, 6] squared_lst = list(map(lambda x: x**2, lst)) print(squared_lst) #输出[1, 4, 9, 16, 25, 36]
在这个例子中,我们使用lambda函数定义了一个函数,将一个数的平方作为该函数的返回值。我们将该函数作为 个参数传递给map()函数,并将列表lst作为第二个参数传递。map()函数将会返回一个新列表,其中每个元素都是原列表的对应元素的平方。
reduce()函数:reduce()函数是Python 2系列中的内置函数,用于将序列中的所有元素应用到函数,并将结果进行累加。它接受两个参数: 个参数是一个函数,用于对序列中的每个元素进行操作,第二个参数是序列,需要应用该函数。
下面是一个例子,演示如何使用lambda函数和reduce()函数进行列表中所有元素的累加:
import functools lst = [1, 2, 3, 4, 5, 6] sum_lst = functools.reduce(lambda x, y: x+y, lst) print(sum_lst) #输出21
在这个例子中,我们使用lambda函数定义了一个函数,用于计算两个数的和。我们将该函数作为 个参数传递给reduce()函数,并将列表lst作为第二个参数传递。reduce()函数将会返回一个累加后的结果。
Lambda函数的优点是,它们可以在代码中快速使用,无需将它们定义为命名函数。另外,它们可以很方便地与其他函数和对象一起使用,例如filter()、map()和reduce()函数。
Lambda函数的缺点是,由于它们只能包含单个表达式,因此不能在其中对变量进行赋值或使用条件语句等控制流操作。 如果需要执行更复杂的操作,则需要将其定义为命名函数。
