map
函数是 Python 内置的一个高阶函数,用于将一个函数应用到一个或多个序列(例如列表、元组等)的每个元素,并返回一个迭代器(在 Python 3 中)。
语法
1 |
map(function, iterable, ...) |
function
: 要应用到每个元素的函数。iterable
: 一个或多个序列(例如列表、元组等)。
基本示例
以下是一些使用 map
函数的基本示例:
示例1:对列表中的每个元素进行平方
1 2 3 |
numbers = [1, 2, 3, 4, 5] squared_numbers = map(lambda x: x**2, numbers) print(list(squared_numbers)) # 输出 [1, 4, 9, 16, 25] |
示例2:将列表中的每个元素转换为字符串
1 2 3 |
numbers = [1, 2, 3, 4, 5] str_numbers = map(str, numbers) print(list(str_numbers)) # 输出 ['1', '2', '3', '4', '5'] |
示例3:使用内置函数对每个元素进行操作
1 2 3 |
numbers = [-1, -2, 3, -4, 5] abs_numbers = map(abs, numbers) print(list(abs_numbers)) # 输出 [1, 2, 3, 4, 5] |
示例4:多个序列
map
函数也可以接受多个序列,函数需要接受相同数量的参数:
1 2 3 4 |
numbers1 = [1, 2, 3, 4, 5] numbers2 = [10, 20, 30, 40, 50] sum_numbers = map(lambda x, y: x + y, numbers1, numbers2) print(list(sum_numbers)) # 输出 [11, 22, 33, 44, 55] |
使用自定义函数
除了使用 lambda
函数,我们也可以使用自定义函数:
1 2 3 4 5 6 |
def add_five(x): return x + 5 numbers = [1, 2, 3, 4, 5] new_numbers = map(add_five, numbers) print(list(new_numbers)) # 输出 [6, 7, 8, 9, 10] |
注意事项
map
函数在 Python 3 中返回的是一个迭代器,如果需要得到列表结果,需要使用list()
函数进行转换。map
函数可以作用于多个可迭代对象(如列表、元组),但前提是这些对象长度相同,否则会在长度最短的可迭代对象结束时停止。
示例总结
以下是一个综合的示例,展示了如何使用 map
函数对列表中的每个元素进行多个操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# 定义函数 def multiply(x): return x * 2 def add(x): return x + 3 numbers = [1, 2, 3, 4, 5] # 使用 map 函数 result1 = map(multiply, numbers) result2 = map(add, numbers) print(list(result1)) # 输出 [2, 4, 6, 8, 10] print(list(result2)) # 输出 [4, 5, 6, 7, 8] |
使用 map
函数可以使代码更加简洁和高效,特别是当需要对序列中的每个元素进行相同的操作时。