1.8.1 高阶函数
高阶函数:其 形参或返回值 为函数。
# filter(function, iterable) # 将可迭代对象中的元素依次作为实参传递给指定的形参函数function调用,返回新的可迭代对象 tup = (1, 2, 0, False, True, -1) obj = filter(lambda x:x-1 , tup) print(list(obj)) # [2, 0, False, -1] # map(function, iterable) # 将可迭代对象中的元素依次作为实参传递给指定的形参函数function调用,返回新的可迭代对象 lst = [1, 2, 3] obj2 = map(lambda x:x**2, lst) print(list(obj2)) # reduce(function, iterable [, initial]) # 将可迭代对象中的元素 从左向右 依次 执行function函数,返回最后一次运算的值 from functools import reduce lst = [1, 2, 3] obj3 = reduce(lambda x,y:x+y , lst) print(obj3)
当高阶函数的参数为函数function的时候,高阶函数传入的iterable的个数必须与形参function可以接收的参数个数相等。【在形参函数function执行的过程,会对每个iterable参数取zip作为实参,如果iterable的长度不一致,则以 最短的 一个iterable为准。】
# 高阶函数的形参函数接收多个参数 # 当高阶函数接收了多个iterable参数,在形参函数function执行的过程,会对每个iterable的元素 取 zip,依次传入function执行。 lst1 = [1, 2, 3] lst2 = [2, 2, 2] obj4 = map(pow, lst1, lst2) # 实质执行过程为:[ pow(1,2) , pow(2,2) , pow(3,2) ] print(list(obj4)) # [1, 4, 9]
1.8.2 递归函数
函数的返回值为自身。(递归函数一定要设置递归出口,即:返回值的触发条件)
汉诺塔问题,斐波那契数列,动态规划算法等。
标签:function,函数,形参,递归函数,1.8,高阶,迭代,iterable From: https://www.cnblogs.com/zhangzhenw/p/17965736