高阶函数是一种高级函数,至少满足以下一个条件:
语法:lambda 参数: 表达式
功能:定义一个匿名函数;减少代码量使代码更简洁
实例:
>>> a = lambda x,y: x+y
>>> a(2,3)
5
相当于
>>> def s(x,y):
return x + y
>>> s(2,3)
5
功能:把函数作用在可迭代对象每个元素上
语法:map(func, iterables)
实例:
使用map()函数,把用户输入的不规范英文名字,变成首字母大写的规范名字。
如输入:[‘victoria’, ‘LISA’, ‘arYE’] 输出:[‘Victoria’, ‘Lisa’, ‘Arye’]
>>> list(map(lambda x: x.capitalize(), ['victoria', 'LISA', 'arYE']))
['Victoria', 'Lisa', 'Arye']
求整数列表中每个元素的平方,最终返回一个列表
>>> map(lambda x: x**2, [1,2,3]) # python3中 map() 函数返回的是一个map对象
<map object at 0x038074B0>
>>> list(map(lambda x: x**2, [1,2,3])) # 要用list()把map对象转为列表才能打印出map对象的值
[1, 4, 9]
相当于
>>> [x**2 for x in [1,2,3]] # 列表解析,即包含for循环的列表
[1, 4, 9]
功能:对序列中元素进行累积。每次取出2个元素放入函数处理,先取出iterables中的1、2个元素放入function处理,再把得到的结果和第3个元素用function运算,最终得到一个值
语法:和map一样,reduce(func, iterables)
实例:
求 1+2+3+…+100 的和
>>> from functools import reduce # Python3.x reduce() 已经被移到 functools 模块里,如果我们要使用,需要引入 functools 模块来调用 reduce() 函数
>>> reduce(lambda x,y: x+y, range(1,101))
5050
定义一个阶乘函数 f(n) = n!
>>> def f(n):
return reduce(lambda x,y: x*y, range(1,n+1))
>>> f(20)
2432902008176640000
相当于
>>> def f(n):
p = 1
for i in range(1, n+1):
p *= i
return p
>>> f(20)
2432902008176640000
功能:过滤函数,根据True或False决定输出,如果是True则保留
语法:filter(func, iterables)
实例:
去掉偶数,只保留奇数
>>> list(filter(lambda x: x%2==1, range(1,21)))
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
保留正数
>>> list(filter(lambda x: x>0, [-10,4,0,1,-8,9]))
[4, 1, 9]
对一个列表 ls=[2,18,9,22,17,24,12,8,27]
>>> ls = [2,18,9,22,17,24,12,8,27]
>>> ls
[2, 18, 9, 22, 17, 24, 12, 8, 27]
>>> list(filter(lambda x:x%3==0, ls))
[18, 9, 24, 12, 27]
>>> list(map(lambda x:x*2+10, ls))
[14, 46, 28, 54, 44, 58, 34, 26, 64]
>>> from functools import reduce
>>> reduce(lambda x,y:x+y, ls)
139
Python3之打印出map结果的print(list())用法
Python reduce() 函数
python中lambda的用法