Python18_高阶函数

高阶函数

  • def:函数的参数或函数的返回值是函数的函数
def handle(func, *param):
    return func(*param)
def my_sum(*param):
    sum = 0
    for i in param:
        sum += i
    return sum
print(handle(my_sum, 1, 2, 3, 4, 5))

系统中自带的高阶函数

  • map(func,interable)
    该函数会把iterable中的数据依次传递给func函数处理,最后把处理的结果返回
    需求:将列表[1,2,3,4,5]中的每个元素平方
def power(n):
    return n ** 2
res = map(power, [1, 2, 3, 4, 5])
print(list(res))
res = map(lambda x: x ** 2, [1, 2, 3, 4, 5])
#ps:此处res是一个迭代器,内部相当于一个指针,使用一次指针往后移一次,所以遍历后print(list(res))为空
  • reduce(func, iteralbe)
    需要 from functools import reduce 。累积操作,func函数必须接收两个参数,reduce会把运行结果当作一个参数,然后从iterable再取出一个数据当作另一个参数
    工作原理:最开始把列表中的1和2当作参数传入,然后将1*2的结果当作参数1,列表中的3当作参数2,依次迭代
from functools import reduce
mylist = [1, 2, 3, 4, 5]
res = reduce(lambda x, y: x * y, mylist)
print(res)

** filter(func,iteralbe)**
过滤器,根据func来过滤iterable,将iterable中的数据传入函数,如果函数返回True,就保留该数据,否则就不保留,即func的返回值为bool类型

list_one = [1, 2, 3, 4, 5, 6, 7, 8, 9]
res = list(filter(lambda x: x % 2 == 1, list_one))
print(res)

sorted(iterable,key=None,reverse=False)
对数据进行排序,key用指定排序的规则,值是一个函数,reverse用来指定是否降序

list_two = [1,3,234,-34,1,24,-234,3,3,6,]
#res = list_two.sort()   #就地排序,会对原数据进行更改
# print(res)
new_list = sorted(list_two,key=abs) #按绝对值大小进行排序。如果是list自带的sort方法会影响原始数据,系统级的函数不会影响原始数据
print(new_list)
print(list_two)

猜你喜欢

转载自blog.csdn.net/qq_34873298/article/details/90317632