一、概念
python用lambda创建匿名函数,顾名思义就是他是一个函数但是没有名字
lambda只是一个表达式,函数体比def简单很多;
二、语法
语法是唯一的,只有一种写法: lambda argument_list: expression
lambda是python的预留字,argument_list是参数列表,expression是表达式
lambda只会访问参数列表中的参数
三、特性
1、函数是匿名的就是没有名字
2、函数有输入输出,输入就是参数列表中的参数,输出是expression表达式输出的值
3、函数功能简单,因为就包含一个表达式,所以无法实现复杂的逻辑
四、用法
1、将函数赋值给变量,从而调用函数:
sum=lambda arg1,arg2:arg1+gra2
sum(1,2) 输出3
sum(2,3) 输出5
2、将lambda作为参数传递给其他函数:
部分python内置函数可以接收函数作为参数,比如以下几类:
Ⅰ、filter 函数:过滤掉不符合条件的元素,返回由符合条件元素组成的迭代器对象,如果要抓变成列表,需要用list。
语法:filter(function, iterable) function指函数,iterable指待过滤序列
将lambda函数作为参数传递给filter
tmplist = filter(lambda x:x%3==0,[1,2,3,4,5,6,7,8,9])
new_list=list(tmplist)
print(new_list)
#lambda过滤能被3整除的数,返回一个[3,6,9]
Ⅱ、sorted函数:sort用于list,sorted可以对所有可迭代的对象进行排序;sorted返回一个新的列表,sort会将原有的列表修改;
语法:sorted(iterable, key=None, reverse=False) iterable:可迭代对象,key来自于可迭代对象中用于排序,reverse排序规则,reverse = True 降序 , reverse = False 升序(默认)
example_list = [5, 0, 6, 1, 2, 7, 3, 4]
>>> result_list = sorted(example_list, key=lambda x: x*-1) 按照降序的方式排列
>>> print(result_list)
[7, 6, 5, 4, 3, 2, 1, 0]
也可写作:
>>>example_list = [5, 0, 6, 1, 2, 7, 3, 4]
>>> sorted(example_list, reverse=True)
[7, 6, 5, 4, 3, 2, 1, 0]
Ⅲ、map函数:map函数会根据提供的函数对指定序列映射,
语法:map(function, iterable, …)
参数 function 是序列中的每一个元素都要调用的 function 函数,返回包含每次 function 函数返回值的新列表。python3返回的是迭代器
example_list = [5, 0, 6, 1, 2, 7, 3, 4]
new_list=map(lambda x:x+1,example_list)
re_list=list(new_list) #将迭代器对象转变成列表
print(re_list)
# 提供了两个列表,对相同位置的列表数据进行相加
>>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
[3, 7, 11, 15, 19]