匿名函数
-
1 lambda函数也叫匿名函数,即函数没有具体的名称。先来看一个简单的例子
def fun(x): return x ** 2 print(fun(4))
使用lambda表达式,可以写成这样:
print((lambda x:x ** 2)(4))
-
2 lambda和普通的函数相比,省去了函数名而已,同时这样的匿名函数,又不能共享在别的地方调用。
lambda基础:
lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值。lambda语句构建的其实是一个函数对象。print((lambda x,y:x+y)(1,2))
-
3 lambda表达式内置函数:
lambda内置函数有3个,分别是filter(筛选),map(映射),reduce(累加)
首先是filter:筛选可迭代对象符合条件的元素,返回值一般人看不懂。poo = [1,5,4,3,12,9,27,55] print(filter(lambda x:x%3 == 0,poo)) #返回值是filter object,我们可以转换一下 print(list(filter(lambda x:x%3 == 0,poo))) #打印[3, 12, 9, 27],使用list转换成列表
map():映射,可以看成f(x) = x(可能有些抽象)
foo =[1,5,4,3,12,9,27,55] print(list(map (lambda x:x*2-1,foo))) #结果为[1, 9, 7, 5, 23, 17, 53, 109]
可以看成这个等式:f(x) = x*2-1
x 1 5 4 3 12 f(x) 1 9 7 5 23 reduce():先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算(累加求和)
要使用reduce()函数要先导reduce包,要不然会报错from functools import reduce poo = [1,2,3,4,5,6] print(reduce (lambda x,y:x+y,foo))#输出21 #下面我们可以开始整活 print(reduce (lambda x,y:x+y,foo,int(input()))) #reduce可以把接收到的数一起计算
转载:https://blog.csdn.net/baidu_38392745/article/details/104415946
查看评论