Python函数式编程

Posted 陈彦斌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python函数式编程相关的知识,希望对你有一定的参考价值。

一、高阶函数

  满足两个特性任何一个即为高阶函数

    a.函数的传入参数是一个函数名

    b.函数的返回值是一个函数名

技术分享图片
 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 num_1 = [1, 2, 10, 5, 7]
 4 
 5 
 6 def map_test(func, array):
 7     ret = []
 8     for i in array:
 9         res = func(i)
10         ret.append(res)
11     return ret
12 
13 
14 def add_one(x):
15     return x+1
16 
17 
18 def reduce_one(x):
19     return x-1
20 
21 
22 print(map_test(add_one, num_1))
23 print(map_test(lambda x: x-1, num_1))
24 
25 print(内置函数:, list(map(lambda x: x**2, num_1)))
26 
27 msg = chenyanbin
28 print(匿名函数,小写转大写:, list(map(lambda x: x.upper(), msg)))
map函数
技术分享图片
 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 movie_people = [alex, sb_zhangsan, lisi]
 4 
 5 
 6 def filter_test(func, array):
 7     ret = []
 8     for p in array:
 9         if not func(p):
10             ret.append(p)
11     return ret
12 
13 
14 print(filter_test(lambda x: x.startswith(sb), movie_people))
filter函数
技术分享图片
 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 # from functools import reduce
 4 # reduce()
 5 num_1 = [1, 2, 3, 4, 5, 6]
 6 
 7 
 8 def reduce_test(func, array, init=None):
 9     if init is None:
10         res = array.pop(0)
11     else:
12         res = init
13     for num in array:
14         res = func(res, num)
15     return res
reduce函数

小结:

map():处理序列中的每个元素,得到的结果是一个‘列表’,该‘列表’元素个数及位置与原来一样

filter():遍历序列中的每个元素,判断每个元素返回一个布尔值,如果是True则留下来

技术分享图片
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 people = [
4     {name: alex, age: 1000},
5     {name: zhangsan, age: 10000},
6     {name: wangwu, age: 18}
7 ]
8 print(list(filter(lambda p: p[age] <= 18, people)))
View Code

reduce():处理一个序列,然后把序列进行合并操作

技术分享图片
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 from functools import reduce
4 print(reduce(lambda x, y: x + y, range(101)))
View Code

 

以上是关于Python函数式编程的主要内容,如果未能解决你的问题,请参考以下文章

写 Python 代码不可不知的函数式编程技术

函数式编程/命令式编程

python_函数式编程

《On Java 8》中文版 第十三章 函数式编程

python之函数式编程

Python进阶学习——函数式编程