Python之map()函数详解

文章介绍了Python内置的map()函数,包括其基本语法、与lambda表达式的结合使用,处理多个可迭代对象以及如何查看返回的迭代器内容。通过示例展示了map()函数在操作字符串列表和元组列表中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、map() 函数简介

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

bonuses = [100, 200, 300]

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

bonuses = [100, 200, 300]

new_bonuses = []

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

print(new_bonuses)  # 输出:[200, 400, 600]

1.1 map() 函数基本语法

Python 提供了一个内置的 map() 函数,可以更加方便地执行这类操作。
以下是 map() 函数的基本语法:

map(function, iterable)

参数解释如下:

  • function:一个函数或方法
  • iterable:一个或多个序列(可迭代对象)

map() 函数的作用是:对序列 iterable 中每一个元素调用 function 函数,返回一个map对象实例。这个map对象本质上来讲是一个迭代器。

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

def double_func(x):
    return x* 2

bonuses = [100, 200, 300]

iterator = map(double_func, bonuses)

1.2 map() 函数+ lambda表达式

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

bonuses = [100, 200, 300]
iterator = map(lambda x: x*2, bonuses)
print(list(iterator))  # 输出:[200, 400, 600]

1.3 map() 函数输入多个可迭代对象iterable

b1 = [100, 200, 300]
b2 = [1, 2, 3]

iterator = map(lambda x,y : x*y, b1, b2)
print(list(iterator))  # 输出:[100, 400, 900]

1.4 查看返回的迭代器内容

使用map函数获得了迭代器iterator后,我们如何查看其中的内容呢?

  • 直接输出迭代器iterator,输出 map object 及其物理地址:
print(iterator)
# 输出:<map object at 0x7fa7f6165470>
  • 使用 for 循环对其进行遍历迭代器iterator:
for x in iterator:
    print(x)
# 输出:
# 200
# 400
# 600
  • 使用 list() 函数将迭代器转换为一个列表:
print(list(iterator))
# 输出:[200, 400, 600]

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

参考资料

### Python `map` 函数使用教程 #### 定义与功能 `map()` 是 Python 中的一个内置函数,能够将一个给定的函数应用于一个或多个可迭代对象(如列表、元组等)中的每一个元素,并返回一个新的迭代器,该迭代器包含了应用函数后的结果[^1]。 #### 语法结构 `map()` 的基本语法如下: ```python map(function, iterable) ``` 其中: - `function`: 要应用到每个元素上的函数。 - `iterable`: 可迭代的对象,比如列表、元组或其他支持迭代的数据类型[^3]。 #### 实际案例展示 下面是一些具体的例子来说明如何使用 `map()` 函数: ##### 将列表内的整数转换成字符串形式 如果有一个由数字组成的列表 `[1, 2, 3, 4]` 并想要将其转化为字符串类型的列表,则可以这样做: ```python numbers = [1, 2, 3, 4] str_numbers = list(map(str, numbers)) print(str_numbers) # 输出 ['1', '2', '3', '4'] ``` 这里 `str` 是内建的字符串化方法,而 `list()` 则是用来把 `map` 返回的结果转为列表显示出来[^4]。 ##### 对两个列表对应位置的数值求平方根并相加 假设存在两组数据分别存储于不同的列表中,现在需要计算每一对对应的平方根之和: ```python import math def sqrt_sum(x, y): return math.sqrt(x) + math.sqrt(y) a = [9, 16, 25, 36] b = [4, 81, 100, 144] result = list(map(sqrt_sum, a, b)) print(result) # 输出大约为 [3.742..., 11.0, 15.0, 19.0] ``` 在这个例子中定义了一个名为 `sqrt_sum` 的辅助函数来进行操作;同时传递了两个参数作为输入给 `map()` 函数处理[^2]。 #### 总结 通过上述介绍可以看出,`map()` 提供了一种优雅的方式来遍历容器并对内部项执行相同的操作。这不仅让代码看起来更整洁易懂,而且有助于提升程序性能。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值