佛山市网站建设,福州产品网页制作的公司,网站建设现状,无锡网站外包1. lambada简单介绍 lambda 在Python编程中使用的频率非常高#xff0c;我们通常提及的lambda表达式其实是python中的一类特殊的定义函数的形式#xff0c;使用它可以定义一个匿名函数。即当你需要一个函数#xff0c;但又不想费神去命名一个函数#xff0c;这时候#xf…1. lambada简单介绍 lambda 在Python编程中使用的频率非常高我们通常提及的lambda表达式其实是python中的一类特殊的定义函数的形式使用它可以定义一个匿名函数。即当你需要一个函数但又不想费神去命名一个函数这时候就可以使用 lambda了。代码示例
g lambda x: x1 # 求 x1 的和
结果 g(1)
2g(2)
3 可以这样认为lambda作为一个表达式定义了一个匿名函数上例的代码x为入口参数x1为函数体用函数来表示为
def g(x):return x1 以上可以看出lambda 表达式使得代码更为紧凑但理解起来却没有定义函数那么看起来直白易懂。因此关于使不使用 lambda表达式一直存在争议就看个人选择了。
2. lambda 语法
lambda函数的语法只包含一个语句如下
lambda [arg1 [,arg2,.....argn]]:expression 其中lambda是Python预留的关键字arg和expression由用户自定义。代码示例
# 普通python函数
def func(a,b,c):return abcprint (func(1,2,3))
# 结果为 6# lambda匿名函数
f lambda a,b,c: abcprint (f(1,2,3))
# 结果为 6# 在代码f lambda a,b,c: abc 中lambda表示匿名函数
# 冒号 “”之前的a,b,c表示它们是这个函数的参数。
# 匿名函数不需要return来返回值表达式本身结果就是返回值。 3. lambda 函数的示例
1. 无参匿名函数: t lambda : True # 分号前无任何参数t()
True 等价于下面的def定义的函数 def func():
... return True
...func()
True
2. 带参数匿名函数 lambda x: x**3 # 带有一个参数 lambda x, y, z: xyz # 带有多个参数 lambda x, y3: x*y # 存在默认值的参数
3. 输入任意个数的参数 lambda *z: z # *z传入的是任意个数的参数
4. 输入带键值对的参数 lambda **arg: arg # **arg传入的是带键值对的参数 4. lambda函数的用法
4.1 将函数赋值给一个变量然后再像一般函数调用 f lambda x, y, z: x*y*zf(2,3,4)
24
4.2 直接在lambda表达式后面传递实参 (lambda x, y: x if xy else y)(1, 2)
2
# 判断字符串是否以某个字母开头print((lambda x:x.startswith(B))(Bob))
True
4.3 将lambda嵌套到普通函数中lambda函数本身做为return的值代码示例 def add(n):
... return lambda x: xn
...f add(1)f(2)
3
例题1. 字符串拼接 f (lambda xI,yCome,zHere: xyz)f(You)
YouComeHere
例题2. 和列表结合使用 L [lambda x: x**2,\lambda x: x**3,\lambda x: x**4]for x in L:
... print(x(2))
...
4
8
16 也可以像下面这样调用 print(L[0](2))
4
例题3. 和字典结合使用 key Bdic { A: lambda: 2*2,\
... B: lambda: 2*4,\
... C: lambda: 2*6}dic[key]()
8
例题4. 求最小值 lower lambda x, y: x if xy else ylower(1, 2)
1 4.4 将lambda函数作为参数传递给其他函数
1. 结合 map 函数使用
此时lambda函数用于指定对列表中每一个元素的共同操作
代码示例
# 求两个列表元素的和 a [1,2,3,4]b [5,6,7,8]list(map(lambda x, y: xy, a, b))
[6, 8, 10, 12] squares map(lambda x: x**2, range(5))list(squares)
[0, 1, 4, 9, 16]
# 求字符串每个单词的长度 sentence Hello Worldwords sentence.split()lengths map(lambda x: len(x), words)list(lengths)
[5, 5]
# 写成一行list(map(lambda x:len(x),Hello World.split()))
2. 结合filter函数使用
此时lambda函数用于指定过滤列表元素的条件
代码示例
# 筛选偶数list(filter(lambda x: x%20, [1,2,3,4,5,6]))
[2, 4, 6]# 等价于下面的列表推导式l [x for x in [1,2,3,4,5,6] if x%20]l
[2, 4, 6] # 选出以 B 开头的名字names [Anne, Amy, Bob, David, Carrie, Barbara]name filter(lambda x: x.startswith(B), names)list(name)
[Bob, Barbara]
3. 和 filter函数和map函数结合使用
代码示例 squares map(lambda x: x**2, range(10))filters filter(lambda x: x5 and x50, squares)list(filters)
[9, 16, 25, 36, 49]
4. 结合sorted函数使用
此时lambda函数用于指定对列表中所有元素进行排序的准则
代码示例 info [(James,32), (Alies,20), (Wendy,25)]sorted(info, keylambda age:age[1]) # 按照第二个元素索引为1排序
[(Alies, 20), (Wendy, 25), (James, 32)]
5. 结合 reduce函数使用
此时lambda函数用于指定列表中两两相邻元素的结合条件。
代码示例
def add(x, y) : # 两数相加
... return x y
...reduce(add, [1,2,3,4,5]) # 计算列表和12345
15reduce(lambda x, y: xy, [1,2,3,4,5]) # 使用 lambda 匿名函数
15
注意事项 lambda 并不会带来程序运行效率的提高只会使代码更简洁。
如果可以使用for…in…if来完成的坚决不用lambda。
如果使用lambdalambda内不要包含循环如果有应定义函数来完成使代码获得可重用性和更好的可读性。
lambda 是为了减少单行函数的定义而存在的。