# python 高阶函数

f = print()
f('hello python')

def maxNum(x, y):
if x > y
return x
else
return y

def getMaxNum(x, y, f):

return f(x, y)

max = getMaxNum(5, 6, maxNum)

python自带了一些功能强大的高阶函数

## Map

map(functioniterable...)

Return an iterator that applies function to every item of iterable, yielding the results. If additional iterable arguments are passed, function must take that many arguments and is applied to the items from all iterables in parallel. With multiple iterables, the iterator stops when the shortest iterable is exhausted. For cases where the function inputs are already arranged into argument tuples, see itertools.starmap().

>>> def doubleNum(x):
...    return x*2
...
>>> l=list(range(1,11))
>>> l
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> double_l=map(doubleNum, l)
>>> double_l
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

## Reduce

functools.reduce(functioniterable[initializer])

Apply function of two arguments cumulatively to the items of sequence, from left to right, so as to reduce the sequence to a single value. For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates ((((1+2)+3)+4)+5). The left argument, x, is the accumulated value and the right argument, y, is the update value from the sequence. If the optional initializer is present, it is placed before the items of the sequence in the calculation, and serves as a default when the sequence is empty. If initializer is not given and sequence contains only one item, the first item is returned.

reduce传入两个参数，一个接收两个参数的函数和一个iterable类并返回一个结果，文档中也给了一个例子，把一个x＋y的函数作用到一个1到5的list，相当于对1到5求和

>>> l=list(range(1,101))
>>> l
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
>>> reduce(lambda x,y:x+y, l)
5050

## Max

max(arg1arg2*args[key])

Return the largest item in an iterable or the largest of two or more arguments.

If one positional argument is provided, it should be an iterable. The largest item in the iterable is returned. If two or more positional arguments are provided, the largest of the positional arguments is returned.

There are two optional keyword-only arguments. The key argument specifies a one-argument ordering function like that used for list.sort(). The default argument specifies an object to return if the provided iterable is empty. If the iterable is empty and default is not provided, aValueError is raised.

If multiple items are maximal, the function returns the first one encountered. This is consistent with other sort-stability preserving tools such as sorted(iterable, key=keyfunc, reverse=True)[0] and heapq.nlargest(1, iterable, key=keyfunc).

>>> max('a','b')
'b'
>>> l=[3,5,9]
>>> max(l)
9
>>> max(l,'a')
'a'
>>> 

>>> def getMax(l):
...    return max(l)
...
>>> f=getMax(list(range(1,6)))
>>> f
5

• 本文已收录于以下专栏：

## python内置的高阶函数

• li_101357
• 2016年10月07日 16:55
• 1225

## Python学习十二：高阶函数

• watermusicyes
• 2015年06月13日 09:19
• 2997

## 【Python】学习笔记——-5.1.3、高阶函数之sorted

• singit
• 2017年02月13日 22:19
• 338

## python进阶一：高阶函数

1、函数式编程：       python特点：不是纯函数式编程（允许变量存在）；                               支持高阶函数（可以传入函数作为变量）；      ...
• a353833082
• 2015年07月08日 15:51
• 3687

## python学习之高阶函数

#####高阶函数####### 1.函数 函数本身也可以赋值给变量,即:变量可以指向函数。 In [91]: abs(-10) Out[91]: 10 In [92]: abs Ou...
• csdn066
• 2017年07月14日 22:09
• 264

## 【PYTHON】入门总结 高阶函数

• yy1015174426
• 2015年05月05日 19:30
• 151

## Python学习笔记(一)　高阶函数，偏函数，闭包

Python中高阶函数可接受其他的函数作为参数。常用高阶函数map(function, list) 让list的每一个元素依次调用function函数，并获取返回值存入一个新的list中。def fo...
• JonsTank2013
• 2016年02月26日 22:12
• 1264

## python中的高阶函数

• sunflower_csdn
• 2015年09月07日 16:59
• 386

## Python__高阶函数

• qq_31179919
• 2016年08月25日 16:21
• 421

## 函数式编程与高阶函数

map(), filter(), is_prime(x),
• JeroldLi
• 2016年08月27日 12:07
• 2481

举报原因： 您举报文章：python 高阶函数 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)