博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python中map()函数的用法讲解
阅读量:4953 次
发布时间:2019-06-12

本文共 1323 字,大约阅读时间需要 4 分钟。

map函数的原型是map(function, iterable, …),它的返回结果是一个列表。

参数function传的是一个函数名,可以是python内置的,也可以是自定义的。

参数iterable传的是一个可以迭代的对象,例如列表,元组,字符串这样的。

这个函数的意思就是将function应用于iterable的每一个元素,结果以列表的形式返回。注意到没有,iterable后面还有省略号,意思就是可以传很多个iterable,如果有额外的iterable参数,并行的从这些参数中取元素,并调用function。如果一个iterable参数比另外的iterable参数要短,将以None扩展该参数元素。还是看例子来理解吧!

a=(1,2,3,4,5)b=[1,2,3,4,5]c="zhangkang"la=map(str,a)lb=map(str,b)lc=map(str,c)print(la)print(lb)print(lc)输出:['1', '2', '3', '4', '5']['1', '2', '3', '4', '5']['z', 'h', 'a', 'n', 'g', 'k', 'a', 'n', 'g']

str()是python的内置函数,这个例子是把列表/元组/字符串的每个元素变成了str类型,然后以列表的形式返回。当然我们也可以传入自定义的函数,看下面的例子。

def mul(x):    return x*xn=[1,2,3,4,5]res=map(mul,n)输出:[1, 4, 9, 16, 25]

把列表n中的每个元素运行一次mul函数后得到的结果作为最终结果列表的元素。再看下有多个iterable参数的情况。

def add(x,y,z):    return x+y+zlist1=[1,2,3]list2=[1,2,3]list3=[1,2,3]res=map(add,list1,list2,list3)print(res)输出:[3, 6, 9]

并行的从三个列表中各自取出元素然后运行add函数,有人可能会问,如果三个列表长度不一样怎么办,前面已经说了,对于短的那个iterable参数会用None填补。对于上面的例子,如果list3=[1,2]的话,那么这个程序会报错,因为虽然在运行add函数的时候列表list3的最后一个元素会用None填补,但是None和int类型的数是不能相加的。也就是说,除非参数function支持None的运算,否则根本没意义。现在我们看下另一个例子你就明白了

def add(x,y,z):    return x,y,zlist1 = [1,2,3]list2 = [1,2,3,4]list3 = [1,2,3,4,5]res = map(add, list1, list2, list3)print(res)输出:[(1, 1, 1), (2, 2, 2), (3, 3, 3), (None, 4, 4), (None, None, 5)]

转载于:https://www.cnblogs.com/neuzk/p/9476442.html

你可能感兴趣的文章
371. Sum of Two Integers java solutions
查看>>
2124: 等差子序列 - BZOJ
查看>>
3529: [Sdoi2014]数表 - BZOJ
查看>>
字符串匹配算法综述
查看>>
Linux centosVMware shell 管道符和作业控制、shell变量、环境变量配置文件
查看>>
在程序被送入后台时,向 iOS 借点时间,来完成一个长期任务
查看>>
【设计模式】工厂模式
查看>>
两个表格中数据不用是一一对应关系--来筛选不同数据,或者相同数据
查看>>
前端之路
查看>>
javascript 继承
查看>>
String类型转int类型方法
查看>>
关于渲染引擎设计,Scene Management的文章
查看>>
oracle 使用leading, use_nl, rownum调优
查看>>
客户数据库出现大量cache buffer chains latch
查看>>
機械の総合病院 [MISSION LEVEL: C]
查看>>
实战练习细节(分行/拼接字符串/字符串转int/weak和copy)
查看>>
Strict Standards: Only variables should be passed by reference
查看>>
hiho_offer收割18_题解报告_差第四题
查看>>
AngularJs表单验证
查看>>
静态方法是否属于线程安全
查看>>