搞定匿名函数与高阶函数
匿名函数
匿名函数:是指不通过常规的def声明函数的方法创建函数,而是用lambda关键字创建函数,顾名思义,匿名函数没有函数名,但是也可以用变量接出来。
创建语法
lambda 形参列表: 函数体 返回值
>>> fn = lambda x: x + 10
>>> fn(20)
30
举例示范
判断一个数是否是偶数
>>> fn = lambda x: True if x % 2 == 0 else False
>>> fn(18)
True
高阶函数
高阶函数:如果一个函数的其中的参数是另一个的函数,并且通过执行得到一个结果
map(func,seq)
功能:将seq序列中的每一个元素传入func并把得到的结果组成一个新的序列
普通函数
def fn(x):
return x * 2
list2 = map(fn,[1,2,3])
print(list(list2))
[2, 4, 6]
匿名函数
list3 = map(lambda x: x * 2, [3,6,9])
print(list(list3))
[6, 12, 18]
reduce(func,seq)
reduce使用前需要导入
from functools import reduce
功能:对数列中的元素1和元素2运算,然后再和元素3运算,直至到最后一个元素,求累加,累乘等
from functools import reduce
sum1 = reduce(lambda x,y : x +y,[i for i in range(1,101)])
print(sum1)
5050
filter(func,seq)
功能:更具具体条件过滤数据,seq中的每个数据传入func,符合条件的返回True,否则返回False
nums = filter(lambda x : x % 2 == 0, range(11))
print(list(nums))
[0, 2, 4, 6, 8, 10]
sorted(seq,key=func,reverse=True/False)
功能:对序列进行排序,并生成新的序列,原序列不发生改变
key:必须是一个有参数有返回值的函数
reverse:默认为False表示升序,reverse为False表示降序
list1 = [{
'name':'jack','age':18},{
'name':'jtom','age':13},{
'name':'jerry','age':23}]
new_list = sorted(list1,key=lambda x : x['age'])
print(new_list)
[{‘name’: ‘jtom’, ‘age’: 13}, {‘name’: ‘jack’, ‘age’: 18}, {‘name’: ‘jerry’, ‘age’: 23}]
总结
合理地使用匿名函数和高阶函数,可以极大的提高代码效率,减少代码数量。