python高阶函数和匿名函数

本文深入探讨了高阶函数的概念,包括如何使用函数作为实参和返回值,以及如何利用变量指向函数。详细讲解了map、reduce、filter和sorted等内置高阶函数的应用,展示了如何通过这些函数高效地处理数据序列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

高阶函数

实参是一个函数名
-函数的返回值是一个函数

函数本身可以复制给变量,变量也可以指向函数

def fun(x,y,f):
    return f(x), f(y)
print(fun(10,-10,abs))

内置的高阶函数

map(): 接受两个参数,一个是函数,一个是序列
map将传入的函数依次作用到序列的每个元素,将结果作为新的序列返回

print(list(map(abs, [-1, -2, -3])))

reduce:把函数作用在一个序列上,接受两个参数,reduce把结果和序列的下一个元素做累积计算

reduce(f,[1,2,3])=f(f(1,2),3)
from functools import reduce 

filter过滤函数
接收一个函数一个序列
filter把传入的函数一次作用于每个元素
根据返回值是True还是False决定保留还是丢弃该元素

def isodd(num):
    if num % 2 == 0:
        return True
    else:
        return False

print(list(filter(isodd,range(101))))

sorted(序列,key=函数名)
默认sort和sorted都是由小到大排序
反转reverse=True

li = [2, 4, 1]
li = sorted(li, reverse=True)

将0移动到最后

count = int(input())
number = [int(input()) for i in range(count)]
# pos = 0
def sortNumber(x):
    # global pos
    # if x == 0:
    #     return count+1
    # else:
    #     pos += 1
    #     return pos
    if x == 0:
        return 1
    else:
        return 0
number = sorted(number, key=sortNumber)
for n in number:
    print(n)

匿名函数:关键字为lambda,冒号前面是形参,后面则是返回值,判断条件

print(lambda *args, **kwargs: (args, kwargs))
print(lambda x, y: x+y)
a = [4, 0, 2, 0, 7]
print(sorted(a, key=lambda x:x==0))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值