《Python编程的术与道:Python语言入门》视频课程
《Python编程的术与道:Python语言入门》视频课程链接:https://edu.csdn.net/course/detail/27845
Lambda函数
Lambda函数是没有名称的in-line函数。它通常被称为匿名函数。
lambda函数的功能与普通函数完全相同,不同之处在于:lambda仅包含一个表达式
Basic Example
def doubler(x):
return x*2
print(doubler(2)) # 4
print(doubler(5)) # 10
4
10
你可以使用lambda函数获得相同的结果。
doubler = lambda x: x*2
print(doubler(2)) # 4
print(doubler(5)) # 10
4
10
多个参数
你可以向lambda函数发送任意数量的参数。 只需用逗号将它们分开。
示例:将两个值相乘的lambda函数
mul = lambda x, y: x*y
print(mul(2, 5))
10
示例:一个将三个值相加的lambda函数
add = lambda x, y, z: x+y+z
print(add(2, 5, 10))
17
默认参数值
可以为参数指定默认值。
当调用不带参数的lambda函数时,它将使用默认值。
示例:默认情况下将值递增1的lambda函数
incrementer = lambda x, y=1: x+y
print(incrementer(5, 3))
8
# using default
print(incrementer(5))
6
返回多个值
要返回多个值,可将它们打包在一个元组中。
然后使用多个赋值来拆包返回的元组的各个部分。
示例:通过将它们打包到一个元组中来返回多个值
findSquareCube = lambda num: (num**2, num**3)
print(type(findSquareCube))
x, y = findSquareCube(2)
print(x)
print(y)
<class 'function'>
4
8
if else in a Lambda
要在lambda中实现选择逻辑,可以使用if else三元表达式。
示例:返回最小元素的lambda函数
findMin = lambda x, y: x if x < y else y
print(findMin(2, 4)) # 2
print(findMin('a', 'x')) # a
2
a
Lambda中的列表推导
可以在lambda函数中使用列表推导。
示例:使用lambda展平一个嵌套列表
flatten = lambda l: [item for sublist in l for item in sublist]
L = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
print(flatten(L)) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
L = [['a', 'b', 'c'], ['d', 'e']]
print(flatten(L)) # ['a', 'b', 'c', 'd', 'e']
[1, 2, 3, 4, 5, 6, 7, 8, 9]
['a', 'b', 'c', 'd', 'e']
用lambda排序
Lambda函数可与sorted()
函数一起使用,以对可迭代对象进行排序。
示例:根据学生年龄对元组列表进行排序
L = [('Sam', 35),
('Max', 25),
('Bob', 30)]
x = sorted(L, key=lambda student: student[1])
print(x) # [('Max', 25), ('Bob', 30), ('Sam', 35)]
[('Max', 25), ('Bob', 30), ('Sam', 35)]
嵌套Lambdas
像普通函数一样,lambda也可以嵌套。
示例:嵌套Lambda
multiplier = (lambda x: (lambda y: x*2 + y))
doubler = multiplier(2)
print(doubler(10)) # 14
tripler = multiplier(3)
print(tripler(10)) # 16
14
16
Jump Tables
lambda也通常用于实现跳转表(jump tables)。
跳转表是要按需调用的函数的列表或字典。
示例:在python中创建平方和立方运算的跳转表
# dictionary of functions
exponent = {'square':lambda x: x ** 2,
'cube':lambda x: x ** 3}
print(exponent['square'](3)) # 9
print(exponent['cube'](3)) # 27
# list of functions
exponent = [lambda x: x ** 2,
lambda x: x ** 3]
print(exponent[0](3)) # 9
print(exponent[1](3)) # 27
9
27
9
27