函数式编程lambda式
2018-07-23 本文已影响0人
人生苦短啊
前言
函数式编程会让程序更加简洁,更有可读性,
三个特性
lambda函数有如下特性:
-
lambda函数是匿名的:所谓匿名函数,通俗地说就是没有名字的函数。lambda函数没有名字。
-
lambda函数有输入和输出:输入是传入到参数列表argument_list的值,输出是根据表达式expression计算得到的值。
-
lambda函数一般功能简单:单行expression决定了lambda函数不可能完成复杂的逻辑,只能完成非常简单的功能。由于其实现的功能一目了然,甚至不需要专门的名字来说明。
map
list_x = [1,2,3,4,5,6,7,8,9,10]
def f1(x):
return x * x
ret = map(f1, list_x)
print(list(ret)) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
list_y = [1,2,3,4,5,6,7,8,9,10]
ret = map(lambda x, y: x * x + y, list_x, list_y)
print(list(ret)) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
reduce
reduce会把前两个数字相加,把得到的新数字再加后面的数字,
有一个初始值参数
# reduce
from functools import reduce
list_x = [1,2,3,4]
r = reduce(lambda x,y:x+y, list_x, 10)
print(r) # 20
filter
filter有过滤功能
# filter
list_x = [1, 0, 1, 0, 1]
r = filter(lambda x: True if x == 1 else False, list_x)
r = filter(lambda x: x, list_x)
print(list(r)) # [1, 1, 1]