【Python】map() 函数:对可迭代对象中的每个元素应用一个函数

Python map() 函数

map() 是 Python 内置的 高阶函数,用于对可迭代对象(如 listtupleset)中的 每个元素 应用一个函数,并返回一个 map 对象(可迭代)


1. 语法

map(function, iterable, ...)

参数

  • function:要应用的函数(可以是内置函数、lambda 函数或自定义函数)。
  • iterable:可迭代对象(如 list, tuple, set, dict, str)。
  • 多个可迭代对象(可选):map() 可以作用于 多个 可迭代对象(类似 zip())。

返回值

  • 返回一个 map 对象需要转换为 list()tuple() 以查看结果)。

2. 基本示例

2.1 使用 map() 计算平方

numbers = [1, 2, 3, 4, 5]

# 使用 lambda 计算平方
squared_numbers = map(lambda x: x ** 2, numbers)

# 转换为列表
print(list(squared_numbers))  # [1, 4, 9, 16, 25]

3. 结合 lambda 使用

示例:计算列表中每个元素的立方

numbers = [2, 3, 4]

cubed = map(lambda x: x ** 3, numbers)
print(list(cubed))  # [8, 27, 64]

4. 使用 map() 处理字符串

4.1 计算字符串长度

words = ["apple", "banana", "cherry"]

lengths = map(len, words)
print(list(lengths))  # [5, 6, 6]

5. map() 作用于多个可迭代对象

5.1 两个列表对应元素相加

list1 = [1, 2, 3]
list2 = [4, 5, 6]

result = map(lambda x, y: x + y, list1, list2)
print(list(result))  # [5, 7, 9]

6. 使用 map() 进行类型转换

6.1 将字符串列表转换为整数

str_numbers = ["1", "2", "3", "4"]

int_numbers = map(int, str_numbers)
print(list(int_numbers))  # [1, 2, 3, 4]

6.2 将数值转换为字符串

numbers = [1, 2, 3, 4]

str_numbers = map(str, numbers)
print(list(str_numbers))  # ['1', '2', '3', '4']

7. map() vs 列表推导式

7.1 map() 实现

numbers = [1, 2, 3, 4]

squared = map(lambda x: x ** 2, numbers)
print(list(squared))  # [1, 4, 9, 16]

7.2 列表推导式

numbers = [1, 2, 3, 4]

squared = [x ** 2 for x in numbers]
print(squared)  # [1, 4, 9, 16]

📌 列表推导式更 Pythonic,代码更简洁,且更易读


8. map()filter() 的区别

map()filter()
作用对所有元素 进行转换筛选符合条件 的元素
结果转换后 的新列表保留 符合条件的元素
适用场景计算、修改元素过滤数据

示例

numbers = [1, 2, 3, 4, 5, 6]

# 使用 map() 计算平方
squared = list(map(lambda x: x ** 2, numbers))

# 使用 filter() 仅保留偶数
evens = list(filter(lambda x: x % 2 == 0, numbers))

print(squared)  # [1, 4, 9, 16, 25, 36]
print(evens)    # [2, 4, 6]

9. 总结

map() 用于 对可迭代对象的每个元素应用函数
适用于批量转换(如计算、类型转换、字符串操作)。
支持多个可迭代对象,可以像 zip() 一样 并行处理多个列表
建议结合 lambda 使用,或使用 列表推导式(更 Pythonic)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值