python高阶函数

高阶函数

把函数作为参数

例如利用add(x,y,f)函数,计算:√x+√y

import math


def add(x, y, f):
    return f(x) + f(y)


print(add(4, 9, math.sqrt))

map()是Python内置的高阶函数,它接受一个函数f和一个list返回一个新的list,不改变之前list

'''
将英文名list变成一个包含规范英文的list

输入:['adam','LISA','barT']

输出:['Adam','Lisa','Bart']
'''

# 将名字格式化


def format_name(str):
    return str.capitalize()


nameList = ['adam', 'LISA', 'barT']
print(nameList)
# 要强转成list
formatNameList = list(map(format_name, nameList))
print(formatNameList)

reduce()也是Python内置的高阶函数 ,类似聚合函数

from functools import reduce


def prod(x, y):
    return x * y

# 第三个参数是初始值
print(reduce(prod, [2, 4, 5, 7, 12], 2))

filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list

'''
利用filter(),可以完成很多有用的功能,例如,删除 None 或者空字符串
'''


def is_not_empty(s):
    # None 类型没有strip方法
    return s and len(s.strip()) > 0


print(list(filter(is_not_empty, ['test', None, '', 'str', '  ', 'END'])))

'''
用filter()过滤出1~100中平方根是整数的数,即结果应该是
'''
import math

'''判断开平方后是否是整数'''
def is_sqr(x):
    listNum = str(math.sqrt(x)).split('.')
    return listNum[len(listNum) - 1] == '0'


print(list(filter(is_sqr, list(range(1, 101)))))

匿名函数

关键字lambda 表示匿名函数,冒号前面的 x 表示函数参数。

匿名函数有个限制,就是只能有一个表达式不写return,返回值就是该表达式的结果。

print filter(lambda s: s and len(s.strip())>0, ['test', None, '', 'str', '  ', 'END'])
posted @ 2021-12-31 09:01  bagdje  阅读(46)  评论(0)    收藏  举报