python lambda-看完就懂

本文介绍了Python中的Lambda函数,包括其定义特点(任意数量参数,单个表达式)、匿名性、优点(闭包和简洁性)和缺点(可读性差)。通过实例演示了如何结合filter和map函数进行列表操作,展示了Lambda的强大应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

语法

lambda 参数:表达式

1、参数:lambda函数可以接受【任意数量的参数】,但函数只能包含【一个表达式】。
2、表达式:是lambda函数执行的一段代码,它可以返回任何值,也可以不返回任何值。

为什么叫匿名函数

匿名函数可以在程序中任何需要的地方使用,但是这个函数只能使用一次,即一次性的。
因此Python Lambda函数也称为丢弃函数,它可以与其他预定义函数(如filter(),map()等)一起使用。相对于我们定义的可重复使用的函数来说,这个函数更加简单便捷。

优缺点

优点:闭包,把函数作为一个方法的参数,让代码变简洁,减少匿名内部类的创建,可以节省资源
缺点:不利于维护、调试,可读性差

举例

1、easy

a = lambda x: x*x 
print(a(3)) #结果为9

2、加速python运行

#——————————一般函数
def my_func(x)return x * x 
print(my_func(3))
#————————Lambda函数
a = lambda x,y: x*y 
print(a(3,7)) #lambda不使用return

应用

1、lambda+filter函数
filter函数:
作用:filter()按照给定的条件过滤列表,并返回符合条件的元素。
代码:

filter(function,iterable)
function -> 判断条件
iterable -> 可迭代对象

1)输出大于二的元素

Demo_lists = [1, 2, 3, 4, 5, 6, 7]

Demo_result_lists = filter(lambda x: x > 2, Demo_lists)
print(list(Demo_result_lists),f'filter type : {type(Demo_result_lists)}')

result:
[3, 4, 5, 6, 7] filter type : <class ‘filter’>

2)利用filter函数过滤列表中字母的大小写

Alphabet_demo_lists = ['a', 'b', 'C', 'D', 'e', 'F', 'H', 'i']

Upper_result_lists = filter(lambda x: x.isupper(), Alphabet_demo_lists)
Lower_result_lists = filter(lambda x: x.islower(), Alphabet_demo_lists)

Upper_result_lists = list(Upper_result_lists)
Lower_result_lists = list(Lower_result_lists)

print(f'Upper : {Upper_result_lists}')
print(f'Lower : {Lower_result_lists}')

result:
Upper : [‘C’, ‘D’, ‘F’, ‘H’]
Lower : [‘a’, ‘b’, ‘e’, ‘i’]

2、lambda+map函数
map()函数
作用:map()函数是一个将给定的列表的值依次在所定义的函数关系中迭代并返回一个新列表
代码:

map(function,iterable...)
function---函数名
iterable---一个或多个序列

1)将列表中的所有元素平方:

a = [1,2,3,4,5,6,7,8,9]
r = map(lambda x:x**2,a)
print(list(r))

result:
[1, 4, 9, 16, 25, 36, 49, 64, 81]

2)两列数相加

a = [1,2,3,4,5,6,7,8,9]
b = [9,8,7,6,5,4,3,2,1]
r1 = map((lambda x,y:x+y),a,b)
print(list(r1))
r2 = map((lambda x,y:(x+y,x*y)),a,b)
print(list(r2))

result:
[10, 10, 10, 10, 10, 10, 10, 10, 10]
[(10, 9), (10, 16), (10, 21), (10, 24), (10, 25), (10, 24), (10, 21), (10, 16), (10, 9)]

3)按照第一个元素排序

a = [('a',2),('d',4),('b',3),('c',1)]
a=sorted(a,key=lambda x:x[0])
print(a)

result:
[(‘a’, 2), (‘b’, 3), (‘c’, 1), (‘d’, 4)]

4)求每个单词的长度

sentence = "Welcome To Beijing!"
words = sentence.split()
lengths  = map(lambda x:len(x),words)
print(list(lengths))

result:
[7, 2, 8]

看完是不是觉得lambda so easy!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值