Map 函数
map(function, iterable, …)
让 function 作用于 iterable 的每个元素,返回一个 惰性 map 对象(迭代器)。
result = map(lambda x: x * 2, [1, 2, 3])
print(list(result)) # [2, 4, 6]
map() 会并行取多个序列的对应元素:
a = [1, 2, 3]
b = [10, 20, 30]
result = map(lambda x, y: x + y, a, b)
print(list(result)) # [11, 22, 33]
转换类型
nums = ['1', '2', '3']
print(list(map(int, nums))) # [1, 2, 3]
去掉字符串两边空格
items = [' a ', ' b ', ' c ']
print(list(map(str.strip, items))) # ['a', 'b', 'c']
def square(n):
return n * n
result = map(square, range(5))
print(list(result)) # [0, 1, 4, 9, 16]
不会立即执行,直到你消费它:
m = map(int, ['1', '2', '3'])
print(next(m)) # 1
print(next(m)) # 2
map:适合函数式、批量调用函数
列表推导:更可读,可写逻辑
等价示例:
list(map(lambda x: x * 2, arr))
[x * 2 for x in arr]
复杂逻辑 -> list comprehension 更直观。
批量转换 -> map 更简洁。
def combine(a, b, c):
return f"{a}-{b}-{c}"
result = map(combine, [1,2], ['A','B'], ['x','y'])
print(list(result))
# ['1-A-x', '2-B-y']
key 转换
d = {"a": 1, "b": 2}
keys_upper = dict(map(lambda kv: (kv[0].upper(), kv[1]), d.items()))
print(keys_upper) # {'A': 1, 'B': 2}
去空格 -> 大写 -> 过滤空字符串
items = [" a ", "B ", " ", "c"]
clean = list(map(lambda x: x.strip().upper(), items))
print(clean) # ['A', 'B', '', 'C']
stocks = [
{"code": "600001", "price": "10.23"},
{"code": "600002", "price": "12.50"},
]
processed = list(map(lambda s: {**s, "price": float(s["price"])}, stocks))
print(processed)
| 场景 | 是否适用 |
|---|---|
| 批量调用某个函数 | ✅ map 很适合 |
| 并行处理多个列表 | ✅ map 非常适合 |
| 复杂逻辑 | ❌ 用列表推导式更好 |
| 惰性处理大数据 | ✅ map 很强 |
| 数据清洗 pipeline | ✅ map 常用 |