python_匿名函数lambda

lambda表达式

应用在函数式的编程中,基本表达式:lambda后面跟一个或多个参数,紧跟一个冒号,以后是一个表达式。包含的表达式不能超过一个,可以多个参数。

下面看一个列子,最简单的使用

1、将lambda赋值给一个变量,通过这个变量间接调用lambda函数

f = lambda x, y, z :x+y+z
print(f(1,2,3))
#结果是6

2、lambda作为返回值返回时输出值的问题

这个涉及到闭包的问题,等我慢慢学习再来解决

def build():
    return lambda x,y: x*x+y*y
print (build()(4,3))
#结果是25

def build(x,y):
    return lambda : x*x+y*y
print (build(4,3)())
#结果是25

3、将lambda函数作为参数传递给其他函数

部分Python内置函数接收函数作为参数。典型的此类内置函数有这些map、reduce、filter、sorted

map:此时lambda函数用于指定对列表中每一个元素的共同操作。是一个列表对另一个列表的映射

语法:map(函数, 一个或多个序列...)

例1、求列表中[1234]的平方,输出结果是列表

def f1(x):
    return x**2
a=map(f1,[1,2,3,4])
print(list(a))     #这里如果是print(a)是错误的!
#结果为[1, 4, 9, 16]

         再用lambda来解决

print(list(map(lambda x:x**2,[1,2,3,4])))
#结果是[1, 4, 9, 16]   注意map函数打印的时候一定要加list
例2、如何利用[5,8,4],[6,9,11] 组成 x+y 新列表
print(list(map(lambda x,y:x+y,[5,8,4],[6,9,11])))
#结果为[11, 17, 15]

filter:此时lambda函数用于指定过滤列表、元组、字符串元素的条件

例3、将列表[1,2,3]中能够被3整除的元素过滤出来。

print(list(filter(lambda x:x%3==0,[1,2,3])))

例4、对字符串“ilovepython”过滤掉o。

list1=list(filter(lambda x:x=='o','ilovepython'))
a=''.join(list1)
print(a)

sorted:此时lambda函数用于指定对列表中所有元素进行排序的准则

语法:sorted(可迭代对象, key指定可迭代对象进行排序, reverse=False(默认升序)/reverse = True )
list1=[2,3,5,4,1]
print(list(sorted(list1)))
#结果为[1, 2, 3, 4, 5]


students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
a=list(sorted(students, key=lambda s: s[2]))            # 按年龄排序
print(a)
#结果为[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值