【python学习笔记】Python函数式编程

说明

函数式编程是使用一系列函数去解决问题,按照一般编程思维,面对问题时我们的思考方式是“怎么干”,而函数函数式编程的思考方式是我要“干什么”。在Python中有lambda,map,reduce,filter等内置方法。

匿名函数(lambda)

语法

lambda args: expression

参数(args)的语法与普通函数一样,同时表达式(expression)的值就是匿名函数调用的返回值;而lambda表达式返回这个匿名函数。

原始方法

L1 = [1,-9,6,6,7]
L2 = []
for i in range(len(L1)): #模拟经典for循环
    if L1[i] > 0:
        lst2.append(L2[i])

使用匿名函数的函数式方法

L2 = filter(lambda n: n > 0, L1)

map函数

map函数是每次只对一个数据进行处理

Map接受一个方法和一个集合作为参数。它创建一个新的空集合,以每一个集合中的元素作为参数调用这个传入的方法,然后把返回值插入到新创建的集合中。最后返回那个新集合。

def to_lower(item):
    return item.lower()

# name = map(lambda n: n.lower(),['LeaSon','Baidu','Qq'])
name = map(to_lower,['LeaSon','Baidu','Qq'])
print name

>>> ['leason', 'baidu', 'qq']

Reduce函数

Reduce函数每次是需要对两个数据进行处理的,
Reduce 接受一个方法和一个集合做参数。返回通过这个方法迭代容器中所有元素产生的结果。

第一次迭代在这之前没有迭代结果传进来。reduce() 使用集合中的第一个元素作为第一次迭代

def add(a,b):
    return a+b

# result = reduce(lambda a,b:a+b,[1,2,3])
result = reduce(add,[1,2,3])
print result

>>> 6

函数式编程特点:

1)代码更简单了。

2)数据集,操作,返回值都放到了一起。

3)你在读代码的时候,没有了循环体,于是就可以少了些临时变量,以及变量倒来倒去逻辑。

4)你的代码变成了在描述你要干什么,而不是怎么去干。

leason | 个人博客

你可能感兴趣的:(python,Python学习之路,函数式编程,python)