Python map()
函数
map()
是 Python 内置的 高阶函数,用于对可迭代对象(如 list
、tuple
、set
)中的 每个元素 应用一个函数,并返回一个 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)。