2019年9月8日 / 375次阅读 / Last Modified 2019年9月9日
内置函数
Python内置的map函数,可以实现对输入序列的每一个元素,执行否一个指定的函数。map函数返回一个迭代器。
我在网络上找到两张图片,能够非常直观的告诉你map函数所实现的功能。
>>> def formap(x):
... return x*10
...
>>> for i in map(formap, range(10)):
... print(i)
...
0
10
20
30
40
50
60
70
80
90
上面的代码示例比较简单,先定义个函数formap,此函数功能就是将入参值增大10倍,map函数使用这个formap函数,对range(10)返回的可迭代对象进行遍历,然后在for...in...循环中遍历map函数返回的迭代器,打印出结果。(关于迭代器和可迭代对象的详细说明)
如果传递给map的执行函数(map内的回调)不是很复杂,可以使用lambda匿名函数,使写出来的代码更加简洁。这也是我们常常在阅读优秀代码是看到的写法:
>>> for i in map(lambda x:x*10, range(10)):
... print(i)
...
0
10
20
30
40
50
60
70
80
90
刚才说到两张图片,下面是第二张关于map函数功能的说明图片:
Python的map函数可以输入多个可迭代对象,请看下面的代码示例:
>>> for i in map(lambda x,y:x+y, range(10), range(10,20)):
... print(i)
...
10
12
14
16
18
20
22
24
26
28
>>> for i in map(lambda x:x[0]+x[1], zip(range(10), range(10,20))):
... print(i)
...
10
12
14
16
18
20
22
24
26
28
到对map函数输入多个可迭代对象的时候,map函数会像Python的zip函数那样,从每隔可迭代对象中取分别取数据,然后执行回调函数。上面代码在第2次for循环的时候,就是用了zip函数,将多个可迭代对象合并。
跟zip函数一样,map函数在处理多个可迭代对象的时候,也是按照最短原则进行,即map返回的迭代器处理最短的可迭代对象后就停止。
>>> for i in map(lambda x,y:x+y, range(10), range(5)):
... print(i)
...
0
2
4
6
8
这段代码中,range(5)是最短的,因此从map返回的迭代器中取数据,耗尽range(5)后,迭代器就停止。
以上就是对Python的内置map函数的介绍,所示例的代码都比较简单,而在实际应用中,map函数的这种功能,可以说是相当强大。
-- EOF --
本文链接:https://www.pynote.net/archives/1086
前一篇:abs函数和加减号的合并对冲
后一篇:匿名函数lambda
©Copyright 麦新杰 Since 2019 Python笔记