跟我学Python系列 -Map()函数的理解

本文探讨了Python中的Map()函数,它应用于可迭代对象的每个元素,使用指定的函数进行处理,并返回处理后的结果列表。与列表推导式对比,Map()仅执行单一运算,而列表推导则涉及笛卡尔乘积。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、对可迭代函数'iterable'中的每一个元素应用‘function’方法,将结果作为list返回。 

来个例子: 

>>> def add100(x):

...     return x+100

... 
>>> hh = [11,22,33]

>>> map(add100,hh)

[111, 122, 133]
就像文档中说的:对hh中的元素做了add100,返回了结果的list。


2、如果给出了额外的可迭代参数,则对每个可迭代参数中的元素‘并行’的应用‘function’。
>>> def abc(a, b, c):
...     return a*10000 + b*100 + c
... 
>>> list1 = [11,22,33]
>>> list2 = [44,55,66]
>>> list3 = [77,88,99]
>>> map(abc,list1,list2,list3)
[114477, 225588, 336699]
看到并行的效果了吧!在每个list中,取出了下标相同的元素,执行了abc()。



3 如果'function'给出的是‘None’
>>> list1 = [11,22,33]
>>> map(None,list1)
[112233]
>>> list1 = [11,22,33]
>>> list2 = [44,55,66]
>>> list3 = [77,88,99]
>>> map(None,list1,list2,list3)
[(114477), (225588), (336699)]


stackoverflow上有人说可以这样理解map(): 
map(f, iterable)

基本上等于:

[f(x) for x in iterable]             


原来map()就是列表推导式啊!要是这样想就错了:这里只是表面现象!


若是将三个list看做矩阵的话: 
11
22
33
44
55
66
77
88
99

map()只做了列上面的运算,而列表推导(也就是嵌套for循环)做了笛卡尔乘积。 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值