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'])

浙公网安备 33010602011771号