高阶函数
- 在Python中,变量可以指向函数
函数名也是变量
既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数
map()
格式:map(function,iterable,. . . )
- 功能:将第一个参数function依次作用在参数可迭代对象中的每一个元素上,返回包含每次function函数返回值的新迭代器
- 参数:
function 函数,有两个参数
iterable 一个或多个可迭代对象(如:序列)
返回值: Python 3.x返回迭代器
例: map_ = map(lambda x: x + x, range(10)) print(list(map_)) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
reduce()
-
功能 功能 函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。 其效果类似:reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
-
参数
function 函数,有两个参数
iterable 可迭代对象
initializer 可选,初始参数
返回值 返回函数计算结果from functools import reduce 模块 格式:reduce(function,iterable[,initializer]) 接收两个参数
- 例: from functools import reduce reduce_ = reduce(lambda x , y: x + y, range(5)) print(reduce_) # 10 (0 + 1 + 2 + 3 + 4 + 5)
filter()
格式filter(function,iterable)
- 功能 该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新迭代器对象中
参数 iunction 判断函数 iterable 可迭代对象(如:序列)
返回值 返回一个迭代器对象 - 例: filter_ = filter(lambda x: x%2 == 0, range(11)) print(list(filter_)) # [0, 2, 4, 6, 8, 10]
sorted()
- 功能:对所有可迭代对象进行排序操作
- 参数
iterable 可迭代对象
key key指定的函数将作用于可迭代对象上的每一个元素,并根据key函数返回的结果进行排序
reverse 排序规则 □ reverse = True 降序 □ reverse = False 升序(默认)
返回值
返回重新排序的列表
例: sorted(iterable, key=abs, reverse=True) reveverse 倒叙,默认为false(正序) key = abs 绝对值 sorted_ = sorted([1, 10, 35, 12, 5123, 23], reverse=True) print(sorted_) # [5123, 35, 23, 12, 10, 1]
lambda
匿名函数格式:lambda 参数:表达式
-
单个使用
(lambda a,b:a if a>b else b)(3,4)
实现斐波那契数列fib = lambda n : n if n <= 2 else fib(n-1)+fib(n-2)
递归函数 -
函数自身调用自身的函数
-
递归:递归前进段,递归边界,递归返回段
-
优点和缺点:
- 优点:定义简单,逻辑清晰 缺点,过身的调用会导致浅溢出
- 缺点:不易后期维护,必须熟悉lambda表达式和抽象函数中参数的类型、以及可读性差等特点