python 的map和reduce(高阶函数)
一、map()
map()函数接受两个参数,一个是函数(f),一个是可迭代对象iterable ,map将传入的函数依次作用到序列的每个元素,并把结果作为新的迭代器iterator 返回
例如:
def f(x): return(x*x) r=map(f,[1,2,3,4,5]) r #是一个迭代器 list(r) #将r变成list
注意:如果是自定义函数,参数只能有一个,否则会报错,但如果是匿名函数lambda,则可以接受多个参数
def f(x,y): return(x+y) r=map(f,([1,2,3,4,],[1,2,3,4])) r list(r) #报错
要记住map将传入的函数依次作用到序列的每个元素,是每个元素,这样可以做很多事情
#可以简单地将list所有数字转为str list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9])) #['1', '2', '3', '4', '5', '6', '7', '8', '9']
配合lambda使用
map(lambda x, y: x+y,[1,3,5,7,9],[2,4,6,8,10]) #不输出结果
配合lambda输出是元组
map(lambda x, y : (x*y,x+y),[2,4,6],[3,2,1]) #[3, 7, 11, 15, 19]
还有其他功能
#1.当不传入function时,map()就等同于zip(),将多个列表相同位置的元素归并到一个元组 map(None,[2,4,6],[3,2,1]) # 结果[(2,3),(4,2),(6,1)] #2.将元组转换为list: map(int,(1,2,3)) #3.将字符串转换为list: map(int,'1234') #4.提取字典中的key,并将结果放在一个list中: map(int,{1:2,2:3,3:4})
map参数是字典dict是,记得,key是被替换的值,value是用来替换的值,这主要用于列名重命名或者是值得重新赋值或者替换
二、reduce()
reduce()函数接受两个参数,一个是函数(f必须接受两个参数),一个是可迭代对象iterable,reduce把前面2个元素作用于f,得到的结果再与下一个元素作用于f,直到最后一个元素
reduce(f,[x1,x2,x3,x4])=f(f(f(x1,x2),x3),x4)
from functools import reduce def add(x,y): return(x+y) reduce(add,[1,2,3,4,5]) #序列求和 from functools import reduce def fn(x,y): return(x*10+y) reduce(fn,[1,3,5,9]) #1359 将[1,3,5,9]变成1359
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人