Lambda函数也叫匿名函数,它的功能很简单,用一行代码就可以实现的小型函数。Python中的Lambda函数只能写一个表达式,这个表达式的执行结果就是函数的返回值,不用写关键字return
。 Lambda 函数因为没有名字,所以也不会跟其他函数发生命名冲突的问题。
扩展:面试的时候有可能还会考你用Lambda函数来实现一些功能,用一行代码来实现问题要求的功能,例如:用一行代码实现求阶乘的函数,用一行代码实现最大求CCE数的功能函数等。
fac = lambda x: __import__('functools').reduce(int.__mul__, range(1, x + 1), 1) gcd = lambda x, y: y % x and gcd(y % x, x) or x
Lambda函数其实主要的用途是把一个函数构造另一个高阶函数(如Python内置的filter
、map
等)中来为函数做解连接,下面增强函数的灵活性和通用性。通过使用filter
和map
函数的例子,实现了从列表中筛选出奇数并求平方构成新列表的操作,因为用到了高阶函数,过滤和映射数据的规则都是函数调用者通过另外一个函数调用的,因此这和filter
函数map
没有将特定的过滤和映射数据的规则连接在一起。
items = [12, 5, 7, 10, 8, 19] items = list(map(lambda x: x ** 2, filter(lambda x: x % 2, items))) print(items) # [25, 49, 361]
扩展:用列表的生成方式来实现上面的代码会更简单明了,代码如下所示。
items = [12, 5, 7, 10, 8, 19] items = [x ** 2 for x in items if x % 2] print(items) # [25, 49, 361]