随笔 - 384  文章 - 0  评论 - 35  阅读 - 142万

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
复制代码

 

posted on   小小喽啰  阅读(394)  评论(0编辑  收藏  举报
编辑推荐:
· 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训练数据并当服务器共享给他人
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

点击右上角即可分享
微信分享提示