
上QQ阅读APP看书,第一时间看更新
2.3.1 map()函数
Python内建了map()函数,它接收两个参数:一个是函数,另一个是迭代器(Iterator)。map()函数将传入的函数依次作用到序列的每一个元素上,把结果作为新的迭代器并返回。
例如,求一个列表中各个数值的立方,返回的还是列表,就可以调用map()函数实现,示例代码如下:

map()函数传入的第一个参数是f,即函数对象本身。由于结果r是一个迭代器,迭代器是惰性序列,因此通过list()函数让它把整个序列都计算出来并返回一个列表。
其实这里可以不需要调用map()函数,编写一个循环也可以实现同样的功能,示例代码如下:

所以,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']”,可以看出列表中所有的数字都转为字符串了。