![零基础入门Python数据分析与机器学习](https://wfqqreader-1252317822.image.myqcloud.com/cover/147/44510147/b_44510147.jpg)
上QQ阅读APP看书,第一时间看更新
2.3.1 map()函数
Python内建了map()函数,它接收两个参数:一个是函数,另一个是迭代器(Iterator)。map()函数将传入的函数依次作用到序列的每一个元素上,把结果作为新的迭代器并返回。
例如,求一个列表中各个数值的立方,返回的还是列表,就可以调用map()函数实现,示例代码如下:
![](https://epubservercos.yuewen.com/F4E5C2/23721471401889206/epubprivate/OEBPS/Images/Figure-P45_8344.jpg?sign=1738820952-HoS5yfSFOEcSSR2WZbc4Xc4Hq0v3Pvog-0-fddcc7bd4d545c776be3b3d97d654127)
map()函数传入的第一个参数是f,即函数对象本身。由于结果r是一个迭代器,迭代器是惰性序列,因此通过list()函数让它把整个序列都计算出来并返回一个列表。
其实这里可以不需要调用map()函数,编写一个循环也可以实现同样的功能,示例代码如下:
![](https://epubservercos.yuewen.com/F4E5C2/23721471401889206/epubprivate/OEBPS/Images/Figure-P45_8346.jpg?sign=1738820952-9cEDddsflsOMxjyI4kd8vpRAGoM5K0kr-0-978b86c4c33f8acffbfdbae9115ec7cb)
所以,map()函数作为高阶函数,它把运算规则抽象化,我们不仅可以传入简单的诸如f(x)=x**3这样的函数,还可以传入任意复杂的函数。例如把列表中所有的数字转为字符串,示例代码如下:
list(map(str,[1, 2, 3, 4, 5, 6, 7, 8, 9]))
运行上述代码,输出为“['1', '2', '3', '4', '5', '6', '7', '8', '9']”,可以看出列表中所有的数字都转为字符串了。