python高级函数map_Python高阶函数map()

map()函数

map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。

map函数的原型是map(function, iterable, …),它的返回结果是一个列表。注意到没有,iterable后面还有省略号,意思就是可以传很多个iterable,如果有额外的iterable参数,并行的从这些参数中取元素,并调用function。

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*x

n=[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+z

list1=[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,z

list1 = [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)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值