MEMOO
MEMOO
Published on 2025-04-18 / 8 Visits
0
0

使用map()函数转换列表元素

摘要:在本节中,你将学习如何使用 Python 的 map() 函数与列表一起工作。

map() 函数简介

当处理 列表(或元组)时,你经常需要转换列表中的元素,并返回一个包含转换后元素的新列表。

假设,你想要将以下 bonuses 列表中的每个数字加倍:

bonuses = [100, 200, 300]

为了实现这一点,你可以使用 for 循环来遍历元素,将每个元素加倍,并将其添加到一个新列表中,如下所示:

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() 函数,而不仅仅是列表或元组。

回到前面的例子,为了使用 map() 函数,你首先定义一个将奖金加倍的函数,然后使用 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() 函数返回一个新列表,其中每个元素都被转换为首字母大写的形式:

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))

输出:

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

总结

  • 使用 Python 的 map() 函数对列表中的每个项调用一个函数,并返回一个迭代器。


Comment