语法
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!