python 高阶函数


前言

学而时习之,不亦说乎,本篇文章主要说一下高阶函数,喜欢的话,记得点个赞奥~


能力有限,阅知有限,不过后面我会常回家看看,有补充的再补上奥,大家有好的知识可以留言评论区哟

一、高阶函数

1.1 定义:

如果一个函数的参数是函数,那么此函数就叫高阶函数

例:

def f1(a):
    a()

def f2():
    print('f2')
f1(f2)

案例:

# 例:只定义一个函数,解决两个数的加减乘除的问题

def do_everthing(a,b,fn):
    return fn(a,b)
res=do_everthing(10,5,lambda n1,n2: n1+n2)
print(res)
res =do_everthing(10, 5, lambda n1,n2: n1 - n2)
print(res)
res =do_everthing(10, 5,lambda n1,n2: n1 * n2)
print(res)
res =do_everthing(10, 5,lambda n1,n2: n1 / n2)
print(res)

2.1 理解:

高阶函数让代码变得简洁优雅,配合lambda函数更好的体现它的优点

二、内置函数

1.map 函数

1.1 定义:

1)函数名称:map
2)参数两个
参数1:一个函数
参数2:是一个可以遍历的序列,如列表、集合、字典等
3)返回值:map object,是一个对新对象的引用

1.2 运用:

l3 = ["a","B","C","d"]

def uppers(a):
    if a.islower():
        return a.upper()
    else:
        return a.lower()

res = map(uppers,l3)
print(list(res))      # 本题使用“map”函数,将大写转小写,小写转大写

# res1 = map(lambda a:a.upper() if a.islower() else "",l3)
# print(list(res1))    # 用 "lambda" 表达式改写

1.3 理解:

1)map 函数内部会将 uppers 函数执行多次(次数=列表 l3 中元素个数)
2)每次执行 uppers 函数时,形参 a 会被按顺序赋值为 l3 列表中的元素
3)uppers 函数的返回值,会被 map 函数放到一个新的序列中

思考一下:新列表与原列表的元素数量一致:为什么?
原列表中有几个元素,uppers 函数就会执行几次
uppers 函数执行几次,就会 return 几个数据
而返回的数据又被添加到新列表中,所以一致

1.3小节:

map 函数的扩展性做的非常好:可以使用 set、list、tuper 函数将返回值转换为自己想要的数据类型

2.filter 函数

2.1 定义:

直接上例子:
将列表中所有大于10的数字放到一个新列表中

l1 = [10, 20, 4, 5, 60]


""" map 函数解决"""
# def filter10(x):
#     if x > 10:
#         return x
#     else:
#         return ''
#
#
# res = map(filter10, l1)
# print(list(res))

def filter10(x):
    if x > 10:
        return x

"""filter 函数解决"""
# res = filter(filter10, l1)
res = filter(lambda x: x if x > 10 else '', l1)
print(list(res))

2.2理解:

如果想将列表中部分符合条件的元素筛选出来,就使用 filter 方法

3. reduce 函数

3.1 定义:


import  functools

list = [1,2,3,4,5]

def func(a,b):
    return a+b
result = functools.reduce(func,list)
print(result)

等我回忆起来了补上,见谅了~
在这里插入图片描述

总结

本篇文章主要是说 高阶函数, 内置函数能者多劳哈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值