24. Python的Lambda函数

《Python编程的术与道:Python语言入门》视频课程
《Python编程的术与道:Python语言入门》视频课程链接:https://edu.csdn.net/course/detail/27845

Lambda函数

Lambda函数是没有名称的in-line函数。它通常被称为匿名函数

lambda函数的功能与普通函数完全相同,不同之处在于:lambda仅包含一个表达式

24. Python的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
上一篇:python 函数 装饰器


下一篇:Matlab绘图基础——用print函数批量保存图片到文件(Print figure or save to file)