python的lambda-map-reduce

lambda作为一个表达式,定义了一个匿名函数:lambda x:f(x),冒号左边的是入口参数,右边的是函数体,可以用函数表示:

def f(x):
	函数体
	return f(x)

举例

lambda x:x**2

他的作用等同于:

def f(x):
	return x**2

lambda单独使用:

tt=lambda x:x**2
print(tt(9))
#81

lambda作为隐函数使用:
结合map:

li=[1,2,3,4,5]
tt=map(lambda x:x**2,li)
for x in tt:
    print(x)

输出:

1
4
9
16
25

结合reduce:

from functools import reduce
li=[1,2,3,4,5]
tt=reduce(lambda x,y:x*y,li)
print(tt)

输出:

120

map和reduce是python的高阶函数:map(映射)用于把一组键值对映射成一组新的键值对,Reduce(归约)用于把一组键值对归约为一个单值
map(f,[x1,x2,x3])=[f(x1),f(x2),f(x3)],对于Iterable的每一个元素代入f函数获取返回值:

def doubl(x):
    return x*2
li=[1,2,3,4,5]
res=map(doubl,li)
print(res)
print(type(res))
for x in res:
    print(x)

输出为:

<map object at 0x000002AF26823148>
<class 'map'>
2
4
6
8
10

reduce(f,[x1,x2,x3])=f(x1,f(x2,f(x3)))

from functools import reduce
def doubl(x,y):
    return x*y
li=[1,2,3,4,5]
res=reduce(doubl,li)
print(res)
print(type(res))

输出为:

120
<class 'int'>

需要注意:python3不再支持reduce,需要从functools导入

猜你喜欢

转载自blog.csdn.net/liulanba/article/details/110920352