这里是一段防爬虫文本,请读者忽略。
本文原创首发于CSDN,作者IDYS
博客首页:https://blog.csdn.net/weixin_41633902/
本文链接:https://blog.csdn.net/weixin_41633902/article/details/107779733
未经授权,禁止转载!恶意转载,后果自负!尊重原创,远离剽窃!
匿名函数
00. 概述
-
匿名,即没有名字
-
匿名函数,即没有名字的函数
- 没有名字如何定义
- 没有名字如何调用
- 如果调用,如何使用
-
Python
借助Lambda
表达式构建匿名函数- 格式
lambda
参数列表: 表达式(lambda x: x ** 2)(4)
# 调用foo = lambda x,y:(x+y) ** 2
#不推荐这么用foo(2,1)
- 建议使用普通函数
def foo(x,y): return (x+y) ** 2
foo(2,1)
- 演示代码
print((lambda x: x**2)(5))
print((lambda x: x*2)((4, 6, 8)))
foo = lambda x: (x+1) ** 2
print(foo(6))
- 运行结果
25
(4, 6, 8, 4, 6, 8)
49
- 匿名函数
- 使用
lamdba
关键字来定义匿名函数 - 参数列表不需要小括号
- 冒号是用来分割参数列表和表达式的
- 不需要使用
return
,表达式的值,就是匿名函数返回值 lambda
表达式(匿名函数)只能写在一行上,被称为单行函数- 用途
- 在高阶函数传参时,使用
lambda
表达式,往往能简化代码
- 在高阶函数传参时,使用
- 使用
01. 用法举例
- 演示代码
list1 = [1, 3, 5, 7, 9, 34, 'b', 'B', 'c', 0, 2, 4]
list1.sort(key=str)
print(list1)
print((lambda x, y=3: x+y)(10))
print((lambda x, y=3: x+y)(12, 34))
print((lambda x, *, y=40: x+y)(5))
print((lambda x, *, y=23: x + y)(12, y=88))
print((lambda *args: (x for x in args))(*range(6)))
print([x for x in (lambda *args: (x+3 for x in args))(*range(6))])
print((lambda *args: [x+2 for x in args])(*range(6)))
print((lambda *args: {x+5 for x in args})(*range(6)))
print([x for x in (lambda *args:map(lambda x: x+1, args))(*range(5))])
print([x for x in (lambda *args:map(lambda x: (x+1, args), args))(*range(5))])
- 运行结果
[0, 1, 2, 3, 34, 4, 5, 7, 9, 'B', 'b', 'c']
13
46
45
100
<generator object <lambda>.<locals>.<genexpr> at 0x000001DF8C4C2CF0>
[3, 4, 5, 6, 7, 8]
[2, 3, 4, 5, 6, 7]
{5, 6, 7, 8, 9, 10}
[1, 2, 3, 4, 5]
[(1, (0, 1, 2, 3, 4)), (2, (0, 1, 2, 3, 4)), (3, (0, 1, 2, 3, 4)), (4, (0, 1, 2, 3, 4)), (5, (0, 1, 2, 3, 4))]
02. lambda与map函数
map()
函数语法:
map(function, iterable, ...)
-
参数
function
– 函数iterable
– 一个或多个序列
-
演示
print([x for x in map(lambda x, y: x+y, [1, 2, 4, 5, 6], [10, 14, 67, 2, 1])])
print([x for x in map(lambda x, y, z: x+y+z**2, [1, 5, 6], [45, 12, 12], [2, 3, 4])])
name_list = ["chWi", "WwCqE", "liYjKK"]
print([x for x in (map(lambda x:x[0].upper()+x[1:].lower(), name_list))]) # 规范函数命名的书写
- 运行结果
[11, 16, 71, 7, 7]
[50, 26, 34]
['Chwi', 'Wwcqe', 'Liyjkk']
写在最后的话:
- 无论每个知识点的难易程度如何,我都会尽力将它描绘得足够细致
- 欢迎关注我的CSDN博客,IDYS’BLOG
- 持续更新内容:
linux基础 | 数据通信(路由交换,WLAN) | Python基础 | 云计算 - 如果你有什么疑问,或者是难题。欢迎评论或者私信我。你若留言,我必回复!
- 虽然我现在还很渺小,但我会做好每一篇内容。谢谢关注!