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)))

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))

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
小结:
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)))
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)))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?