day10-高阶函数

时间:2023-03-09 10:03:24
day10-高阶函数

高阶函数

高阶函数:就是把函数当成参数传递的一种函数,例如:

def add(x,y,f):

return f(x)+f(y)

print(add(-8,11,abs))

结果:

19

解释:

  1. 调用add函数,分别执行abs(-8) 和abs(11),分别计算出他们的值
  2. 最后做和运算

介绍几种常用的高阶函数

 #!/usr/bin/env python
# -*- coding:utf-8 -*-
# @time: 2017/11/1 21:09
# Author: caicai
# @File: def1.py
from functools import reduce
###map()函数,第一个参数为自定义函数,第二个参数为可迭代对象
lt = [1,2,3,4,5] def f2(x):
return x*x
ml = map(f2,lt)
print(type(ml))
print(list(ml))
print('################reduce######################',)
###reduce()函数
#传入的函数必须接受两个参数,
#把可迭代对象的两个参数作为函数的实参,传入到f好吃中,
#把每次f运算的结果作为第一个实参,可迭代对象额下个元素作为另外一个实参,传入函数f中
#以此类推,最终得到结果,
def f(x,y):
return x + y
print(reduce(f,[1,2,3,4,5], 10 )) print('##############filter######################')
#fukter函数
#函数会每次把可迭代对象的元素传入进去,如果返回为true,则保留该元素,如果返回为false,则不保留该函数
a = [1,2,3,4,5]
def is_odd(x):
return x%2 == 1
print(list(filter(is_odd,a)))
#sorted() 排序
#对字典就行排序
#sorted()
mm = dict(a=2,c=1,b=3,d=4)
print(mm)
for i in mm:
print(i)
for j in mm.items():
print(j)
#print(mm)
test = sorted(mm.items(),key=lambda d: d[1])
# test = sorted(mm.items(),key = reverse=False)
print(test) 输出结果

############sorted###########
{'a': 2, 'c': 1, 'b': 3, 'd': 4}
a
c
b
d
('a', 2)
('c', 1)
('b', 3)
('d', 4)
[('c', 1), ('a', 2), ('b', 3), ('d', 4)]

匿名函数

匿名函数:没有名字的函数
实例
#正常函数表示
def sum(x,y):
return x+y #匿名函数表示
m = lambda x, y: x+y
print(m(4,5))