精通 Python map() 函数:语法、示例与最佳实践
精通 Python map() 函数:语法、示例与最佳实践
Python 内置 map() 对可迭代对象(列表、元组、集合、字符串、字典等)的每个元素应用函数,返回新的可迭代对象。它是 Python 函数式编程的基石。
学习内容
- 语法与核心参数
map()底层工作原理- 配合内置函数使用
- 应用于字符串、列表、元组、字典、集合
- 结合 lambda 表达式
- 单次调用组合多个迭代器
语法
map(function, iterable1, iterable2, ... iterableN)
参数
- function:必需,将应用于每个元素的可调用对象。
- iterable(s):一个或多个可迭代对象。函数每次调用接收来自每个可迭代对象的一个元素。
返回值
结果是 map 对象——惰性可迭代对象,按需产出转换后的项。转为列表、元组或集合以消费值。
map() 如何工作
简单示例:对列表每个数字求平方。
def square(n):
return n * n
my_list = [2, 3, 4, 5, 6, 7, 8, 9]
updated = map(square, my_list)
print(list(updated)) # [4, 9, 16, 25, 36, 49, 64, 81]
map 对象是惰性的;转为列表强制求值。
配合内置函数使用 map()
可结合任何接受单参数的内置函数。例如四舍五入浮点数:
values = [2.6743, 3.63526, 4.2325, 5.9687967, 6.3265, 7.6988, 8.232, 9.6907] rounded_vals = map(round, values) print(list(rounded_vals)) # [3, 4, 4, 6, 6, 8, 8, 10]
映射字符串
字符串可迭代,map() 可转换每个字符或单词。
def to_upper(s):
return s.upper()
text = "welcome to guru99 tutorials!"
print("".join(map(to_upper, text))) # WELCOME TO GURU99 TUTORIALS!
映射数字列表
def times_ten(n):
return n * 10
nums = [2, 3, 4, 5, 6, 7, 8, 9]
print(list(map(times_ten, nums))) # [20, 30, 40, 50, 60, 70, 80, 90]
映射元组
def to_upper_str(s):
return s.upper()
languages = ("php", "java", "python", "c++", "c")
print(list(map(to_upper_str, languages))) # ['PHP', 'JAVA', 'PYTHON', 'C++', 'C']
映射字典与集合
遍历字典时 map() 接收键;集合顺序任意。
def times_ten(n):
return n * 10
sample_set = {2, 3, 4, 5, 6, 7, 8, 9}
print(sorted(map(times_ten, sample_set))) # [20, 30, 40, 50, 60, 70, 80, 90]
使用 Lambda 函数
匿名函数让代码更简洁:
nums = [2, 3, 4, 5, 6, 7, 8, 9] print(list(map(lambda x: x * 10, nums))) # [20, 30, 40, 50, 60, 70, 80, 90]
多迭代器
示例 1:两列表相加
def add(a, b):
return a + b
list1 = [2, 3, 4, 5, 6, 7, 8, 9]
list2 = [4, 8, 12, 16, 20, 24, 28]
print(list(map(add, list1, list2))) # [6, 11, 16, 21, 26, 31, 36]
示例 2:列表与元组元素拼接
def concat(a, b):
return f"{a}_{b}"
letters = ['a', 'b', 'b', 'd', 'e']
brands = ('PHP', 'Java', 'Python', 'C++', 'C')
print(list(map(concat, letters, brands))) # ['a_PHP', 'b_Java', 'b_Python', 'd_C++', 'e_C']
核心要点
map()用给定函数转换可迭代对象的每个元素。- 返回惰性迭代器;用
list、tuple或set实例化结果。 - 兼容任何可调用对象——内置函数、用户定义函数和 lambda。
- 支持多可迭代对象;函数需接受匹配数量的参数。
- 适合编写整洁的函数式代码及高效处理大数据集。
Python
- C++ 运算符重载实战指南:语法、方法、限制与代码示例
- C++ 函数详解:从声明到调用的实战指南
- Python Lambda匿名函数实战指南
- Python 生成器:高效迭代与进阶用例
- Python 闭包详解:嵌套函数如何捕获变量
- 精通 Python 装饰器:专家技巧增强函数
- Python print() 函数完全指南:基础用法、空行打印与自定义结束符
- Python strip() 方法完全指南:去除首尾空白与自定义字符实战
- Python str.count() 完全指南:统计字符与子串出现次数实战
- Python format() 字符串格式化完全指南:占位符、格式化规范、类与字典应用
- Python 字符串 find() 方法完全指南:语法、参数、替代方案与计数技巧
- 精通 Python Lambda 函数:实用示例与最佳实践