Python入门教程第37篇 map()函数

Posted 不剪发的Tony老师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python入门教程第37篇 map()函数相关的知识,希望对你有一定的参考价值。

本篇我们将会介绍如何使用 map() 函数对列表元素进行变换操作。

map() 函数简介

当我们使用列表或者元组时,经常需要对列表元素进行数学变换操作并返回一个新的列表。例如,我们想要将列表 bonuses 中的每个元素都乘以 2:

bonuses = [100, 200, 300]

为此,我们可以使用一个 for 循环遍历列表,将每个元素乘以 2,然后将结果添加到一个新的列表中:

bonuses = [100, 200, 300]

new_bonuses = []

for bonus in bonuses:
    new_bonuses.append(bonus*2)

print(new_bonuses)

输出结果如下:

[200, 400, 600]

Python 提供了一个内置的 map() 函数,可以更加方便地执行这类操作。map() 函数可以遍历列表或元组中的每个元素,针对每个元素应用一个函数,然后返回一个包含新元素的迭代器。

以下是 map() 函数的基本语法:

iterator = map(fn, list)

在以上语法中,fn 是函数名,该函数将会针对每个元素进行调用。

实际上,我们可以将任何可遍历对象传递给 map() 函数,而不仅仅是列表或者元组。

回到上面的示例,我们可以定义一个将 bonus 乘以 2 的函数,然后使用 map() 函数调用该函数:

def double(bonus):
    return bonus * 2


bonuses = [100, 200, 300]

iterator = map(double, bonuses)

或者也可以使用 lambda 表达式对代码进一步进行简化,例如:

bonuses = [100, 200, 300]
iterator = map(lambda bonus: bonus*2, bonuses)

一旦我们获得了一个迭代器,就可以使用 for 循环对其进行遍历。或者,我们也可以使用 list() 函数将迭代器转换为一个列表:

bonuses = [100, 200, 300]
iterator = map(lambda bonus: bonus*2, bonuses)
print(list(iterator))

map() 函数示例

接下来我们继续看几个使用 map() 函数操作列表的示例。

示例一:使用 map() 函数操作字符串列表

以下示例使用 map() 函数对字符串列表中的每个元素进行首字母大写转换,然后返回一个新的列表:

names = ['david', 'peter', 'jenifer']
new_names = map(lambda name: name.capitalize(), names)
print(list(new_names))

输出结果如下:

['David', 'Peter', 'Jenifer']

示例二:使用 map() 函数操作元组列表

假设存在以下由多个元组组成的购物车列表:

carts = [['SmartPhone', 400],
         ['Tablet', 450],
         ['Laptop', 700]]

我们需要计算每个产品的纳税额,税率为 10%。同时,我们需要将纳税额作为第三个元素添加到每个产品信息中。最终返回的列表如下:

[['SmartPhone', 400, 40.0],
['Tablet', 450, 45.0],
['Laptop', 700, 70.0]]

为此,我们可以使用 map() 函数创建一个新的元素,将纳税额作为它的值:

carts = [['SmartPhone', 400],
         ['Tablet', 450],
         ['Laptop', 700]]

TAX = 0.1
carts = map(lambda item: [item[0], item[1], item[1] * TAX], carts)

print(list(carts))

总结

  • 使用 map() 函数对列表中的每个元素执行一个操作函数并返回一个迭代器。

以上是关于Python入门教程第37篇 map()函数的主要内容,如果未能解决你的问题,请参考以下文章

Python入门之经典函数实例——第3关:Map-Reduce - 映射与归约的思想

Python入门教程第38篇 filter()函数

Python入门教程第61篇 函数进阶之偏函数

Python入门教程第62篇 函数进阶之类型提示

Python入门教程第25篇 递归函数

Python入门教程第22篇 函数