函数式编程lambda式

2018-07-23  本文已影响0人  人生苦短啊
前言

函数式编程会让程序更加简洁,更有可读性,

三个特性

lambda函数有如下特性:

  1. lambda函数是匿名的:所谓匿名函数,通俗地说就是没有名字的函数。lambda函数没有名字。

  2. lambda函数有输入和输出:输入是传入到参数列表argument_list的值,输出是根据表达式expression计算得到的值。

  3. 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]
上一篇下一篇

猜你喜欢

热点阅读