python 函数式编程

函数式编程最常见的技术就是对一个集合做Map,Reduce,Filter操作.这比起过程式的语言来说,在代码上要更容易阅读.(传统过程式的语言需要使用for/while循环,然后在各种变量中把数据倒过来倒过去的)

函数式编程的准则:不依赖于外部的数据,而且也不改变外部数据的值,而是返回一个新的值给你

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
def return_add_model_id(self, modelList):
func = lambda x: modify_idKeys(x) # 闭包
model_id = self._id
def modify_idKeys(goods):
g = goods.copy()
for keys, value in goods.items():
if keys == '_id':
g[model_id] = value
# g.pop('_id'),还保留着
return g
return list(map(func, modelList))
# 依次执行函数得到结果,并将结果组成一个新的list对象后进行返回
province_list = [{'name': '北京市', 'code': '11'}, \
{'name':'天津市','code':'12'},{'name':'河北省','code':'13'}]
remove_province_list = ['河北省']
# 函数式编程的filter 不仅可以做判断的依据,而且还可以修改其值
list(filter(lambda x: x.get('name') not in remove_province_list \
and x.pop('code'), province_list))
# [{'name': '北京市'}, {'name': '天津市'}]
a = list(map(lambda x, y : x*y, [1.2, 3, 5], [2, 4, 6]))
print(a)#[2.4,12,30]
a = reduce(lambda x,y:x+y,a)
print(a)#44.4
def toUpper(item):
return item.upper()
list(map(toUpper, ["hao", "chen", "coolshell"]))
# ['HAO', 'CHEN', 'COOLSHELL']
Share Comments