搞定匿名函数与高阶函数

匿名函数

匿名函数:是指不通过常规的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}]

总结

合理地使用匿名函数和高阶函数,可以极大的提高代码效率,减少代码数量。

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务