解释python中的map函数

map是一个高阶函数,用于对可迭代对象的每个元素应用指定函数,生成新的惰性求值迭代器,核心功能是在不修改原始数据的前提下,通过函数式编程实现数据转换。
什么是可迭代对象呢,就是任何可以被遍历的对象。那么什么是惰性求值迭代器呢,就是不会一次性计算所有结果,而是在需要的时候才逐个生成结果的迭代器,这种按需计算的特性能节省内存空间,尤其适合处理大量数据或者无限序列的时候。
为什么叫惰性?普通的列表,元组等可迭代对象,会一次性存储所有元素在内存中,比如【1,2,3,4】会同时占用四个元素的内存。但是map()返回的迭代器是惰性的,调用map(函数,可迭代对象)时,它不会立刻执行函数处理所有元素,只是记录了要对哪些元素执行什么函数。
2.语法

map(function,iterable1,iterable2,iterable3,...)

3.使用示例

基础用法(单列表)

nums = [1,2,3,4]
squared = map(lambda x: x**2,nums)
print(list(squared))

这里nums是一个列表,列表是用中括号定义的。map里面的函数是一个匿名函数,返回x的平方。得到的squared就是一个惰性迭代器。

多列表操作

a = [1,2,3]
b= [4,5,6]
product = map(lambda x,y : x*y,a,b)
print(list(product))

lambda x,y : x*y,这是一个匿名函数,作用是接收l参数x和y,并返回他们的乘积。后面的参数是列表a和b,两个可迭代对象。map会依次取出a和b中位置相同的元素,传给lambda函数计算乘积,product是map返回的迭代器,需要转换成列表才能直观看到结果。所以是list(product)。

使用内置函数

words = [“hello”,“world”,“python”]
upper_words = map(str.upper,words)
print(list(upper_words))
这段代码的意思是将列表中所有单词转换为大写形式。

处理不等长可迭代对象

a = [1,2,3,4]
b = [5,6]
result = map(lambda x,y : x + y,a,b)
print(list(result))
这段代码用map()函数对两个不等长的列表a和b进行对应元素求和,map函数的执行逻辑,map(lambda x,u:x+y,a,b)的工作方式是,从两个列表中依次各取出一个元素,传给lambda函数计算求和,直到其中一个列表取完为止。
第 1 次:取 a[0]=1 和 b[0]=5 → 计算 1+5=6;
第 2 次:取 a[1]=2 和 b[1]=6 → 计算 2+6=8;
此时 b 已经没有元素了(b 只有 2 个元素),map 会停止执行,忽略 a 中剩余的元素(3 和 4)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值