python中的map函数
Python 中的 map 函数笔记
一、函数签名
map(function, iterable, ...)
map() 会将指定的函数依次作用于一个或多个可迭代对象的对应元素,并返回一个迭代器(map 对象)。
function:用于处理每个元素的函数。iterable:一个或多个可迭代对象(如列表、元组、字符串等)。
二、基本用法
nums = [1, 2, 3, 4]
result = map(lambda x: x * 2, nums)
print(list(result)) # 输出: [2, 4, 6, 8]
返回值是一个 map 对象,需使用 list()、tuple() 等转换为具体类型才能看到结果。
data = "5,10,15"
map_obj = map(int, data.split(',')) # 创建map对象
# 尝试直接使用
print(map_obj) # 输出: <map object at 0x7f8d5c2b8d60>
print(map_obj[0]) # 报错: TypeError: 'map' object is not subscriptable
# 转换为列表后
list_obj = list(map_obj)
print(list_obj) # 输出: [5, 10, 15]
print(list_obj[0]) # 输出: 5
# 尝试第二次使用map对象
print(sum(map_obj)) # 输出: 0 → 迭代器已耗尽!
三、多个可迭代对象
map 支持传入多个可迭代对象,函数的参数个数需与之对应:
a = [1, 2, 3]
b = [4, 5, 6]
result = map(lambda x, y: x + y, a, b)
print(list(result)) # 输出: [5, 7, 9]
如果某个可迭代对象比其他的短,map 会以最短的为准。
四、常见用途示例
1. 类型转换
str_list = ['1', '2', '3']
int_list = list(map(int, str_list)) # [1, 2, 3]
2. 字符串处理
words = ['python', 'map', 'function']
upper_words = list(map(str.upper, words)) # ['PYTHON', 'MAP', 'FUNCTION']
3. 多输入处理
list1 = [1, 2, 3]
list2 = [10, 20, 30]
sums = list(map(lambda x, y: x + y, list1, list2)) # [11, 22, 33]
五、与列表推导式对比
| 特性 | map() |
列表推导式 |
|---|---|---|
| 可读性 | 一般(尤其是嵌套函数时) | 通常更好 |
| 灵活性 | 仅支持函数调用 | 支持任意表达式 |
| 惰性计算 | 是(返回迭代器) | 否(直接生成完整列表) |
| 多个可迭代对象 | 支持 | 不直接支持(需配合 zip 使用) |
一般建议:
- 对纯函数映射的简单场景,可使用
map; - 对于更复杂的处理逻辑,建议使用列表推导式,结构更清晰。
六、注意事项
- 返回值是迭代器,只能消费一次。
- 使用函数时需确保与可迭代对象的参数个数匹配。
- 使用内置函数(如
int,str.upper等)时可直接传入,不需使用lambda。````

浙公网安备 33010602011771号