map()
函数map()
是 Python 内置的 高阶函数,用于对可迭代对象(如 list
、tuple
、set
)中的 每个元素 应用一个函数,并返回一个 map 对象(可迭代)。
map(function, iterable, ...)
function
:要应用的函数(可以是内置函数、lambda 函数或自定义函数)。iterable
:可迭代对象(如 list
, tuple
, set
, dict
, str
)。map()
可以作用于 多个 可迭代对象(类似 zip()
)。map
对象(需要转换为 list()
或 tuple()
以查看结果)。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]
lambda
使用示例:计算列表中每个元素的立方
numbers = [2, 3, 4]
cubed = map(lambda x: x ** 3, numbers)
print(list(cubed)) # [8, 27, 64]
map()
处理字符串words = ["apple", "banana", "cherry"]
lengths = map(len, words)
print(list(lengths)) # [5, 6, 6]
map()
作用于多个可迭代对象list1 = [1, 2, 3]
list2 = [4, 5, 6]
result = map(lambda x, y: x + y, list1, list2)
print(list(result)) # [5, 7, 9]
map()
进行类型转换str_numbers = ["1", "2", "3", "4"]
int_numbers = map(int, str_numbers)
print(list(int_numbers)) # [1, 2, 3, 4]
numbers = [1, 2, 3, 4]
str_numbers = map(str, numbers)
print(list(str_numbers)) # ['1', '2', '3', '4']
map()
vs 列表推导式map()
实现numbers = [1, 2, 3, 4]
squared = map(lambda x: x ** 2, numbers)
print(list(squared)) # [1, 4, 9, 16]
numbers = [1, 2, 3, 4]
squared = [x ** 2 for x in numbers]
print(squared) # [1, 4, 9, 16]
列表推导式更 Pythonic,代码更简洁,且更易读。
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]
✅ map()
用于 对可迭代对象的每个元素应用函数。
✅ 适用于批量转换(如计算、类型转换、字符串操作)。
✅ 支持多个可迭代对象,可以像 zip()
一样 并行处理多个列表。
✅ 建议结合 lambda
使用,或使用 列表推导式(更 Pythonic)。