查看“Python的lambda表达式”的源代码
←
Python的lambda表达式
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==什么是lambda表达式== *lambda表达式可以用来声明'''匿名函数''',也就是没有函数名字的临时使用的小函数,尤其适合需要一个函数作为另一个函数参数的场合。也可以定义'''具名函数'''。 ==lambda表达式的写法== *lambda表达式'''只可以包含一个表达式''',该表达式的计算结果可以看作是函数的返回值,不允许包含复合语句,但在表达式中可以调用其他函数。 *普通写法: <nowiki>def f(x, y, z): r = x + y + z; return r</nowiki> *lambda写法: <nowiki>>>> f = lambda x, y, z: x+y+z #可以给lambda表达式起名字 >>> f(1,2,3) #像函数一样调用 6 >>> g = lambda x, y=2, z=3: x+y+z #参数默认值 >>> g(1) 6 >>> g(2, z=4, y=5) #关键参数 11</nowiki> ==lambda表达式的花式应用(可选)== *lambda列表: <nowiki>>>> L = [(lambda x: x**2), (lambda x: x**3), (lambda x: x**4)] >>> print(L[0](2),L[1](2),L[2](2)) 4 8 16 *lambda字典: <nowiki>>>> D = {'f1':(lambda:2+3), 'f2':(lambda:2*3), 'f3':(lambda:2**3)} >>> print(D['f1'](), D['f2'](), D['f3']()) 5 6 8</nowiki> *映射lambda函数: <nowiki>>>> L = [1,2,3,4,5] >>> print(list(map(lambda x: x+10, L))) #模拟向量运算 [11, 12, 13, 14, 15] >>> L [1, 2, 3, 4, 5]</nowiki> *在lambda表达式中调用函数 <nowiki>>>> def demo(n): return n*n >>> demo(5) 25 >>> a_list = [1,2,3,4,5] >>> list(map(lambda x: demo(x), a_list)) #在lambda表达式中调用函数 [1, 4, 9, 16, 25]</nowiki> *在排序中应用lambda规则: <nowiki>>>> data = list(range(20)) #创建列表 >>> data [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] >>> import random >>> random.shuffle(data) #打乱顺序 >>> data [4, 3, 11, 13, 12, 15, 9, 2, 10, 6, 19, 18, 14, 8, 0, 7, 5, 17, 1, 16] >>> data.sort(key=lambda x: x) #和不指定规则效果一样 >>> data [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] >>> data.sort(key=lambda x: len(str(x))) #按转换成字符串以后的长度排序 >>> data [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] >>> data.sort(key=lambda x: len(str(x)), reverse=True) #降序排序 >>> data [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] </nowiki> *例2: <nowiki>>>> import random >>> x = [[random.randint(1,10) for j in range(5)] for i in range(5)] #使用列表推导式创建列表 #包含5个子列表的列表 #每个子列表中包含5个1到10之间的随机数 >>> for item in x: print(item) [5, 6, 8, 7, 4] [1, 5, 3, 9, 4] [9, 6, 10, 7, 6] [8, 2, 7, 1, 6] [1, 7, 5, 3, 5] >>> y = sorted(x, key=lambda item: (item[1], item[4])) #按子列表中第2个元素升序、第5个元素升序排序 >>> for item in y: print(item) [8, 2, 7, 1, 6] [1, 5, 3, 9, 4] [5, 6, 8, 7, 4] [9, 6, 10, 7, 6] [1, 7, 5, 3, 5]</nowiki> 返回 [[Python函数和代码复用]]
返回至
Python的lambda表达式
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息