今天主要学习了一些py高阶函数,所谓高阶函数其实就是指函数的参数可以接收别的函数
下面贴一下今天写的练习
# coding:utf-8 import math def get_result(a,b,*fns): return [fn(a+b) for fn in fns] a = float(input('a:')) b = float(input('b:')) print('结果是:',get_result(a,b,math.ceil,math.floor))
# coding:utf-8 from math import sqrt def jisuan(x,*kw): answer=[f(x) for f in kw] return answer print(jisuan(9,sqrt,abs))
map
map函数根据提供的函数对指定的序列做映射,定义
>>> map(lambda x:x+2, [1, 2, 3]) [3, 4, 5] >>> map(lambda x:x+2, (1, 2, 3)) [3, 4, 5] >>> map(lambda x:x+2, [1, 2], [1, 2]) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: <lambda>() takes exactly 1 argument (2 given)
reduce
reduce函数会对参数序列中元素进行累积。定义:
reduce(function, sequence[, initial]) -> value
>>> reduce(lambda x, y:x+y, [1,2,3,4]) 10 >>> reduce(lambda x, y:x+y, [1,2,3,4], 10) 20
lambda
编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。
举例对比(列表中的元素平方):
>>> map(lambda x:x*x, range(5)) [0, 1, 4, 9, 16] >>> def sq(x): ... return x * x ... >>> map(sq, range(5)) [0, 1, 4, 9, 16]