在Python中,map() 函数是一个内置的高阶函数,它接受两个主要参数:一个函数和一个可迭代对象(如列表、元组、集合、字典的键或值的集合等)。map() 函数将指定的函数应用于可迭代对象的每一个元素,并返回一个迭代器,其中包含了所有应用函数后的结果。
语法
python
map(function, iterable, ...)
function:这是一个将被应用到可迭代对象每个元素上的函数。
iterable:一个或多个可迭代对象,function 将被应用到它们的元素上。如果有多个可迭代对象,那么这些可迭代对象中的元素会并行地应用到 function 上,并且 function 必须接受与可迭代对象数量相匹配的参数数量。
返回值
map() 函数返回一个迭代器,其中包含了应用函数后的结果。如果需要将这些结果作为一个列表(或其他可迭代对象)来处理,可以使用 list()(或其他相应的函数)来转换这个迭代器。
示例
单个可迭代对象
python
def square(x):
return x * x
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(square, numbers))
print(squared_numbers) # 输出: [1, 4, 9, 16, 25]
在这个例子中,square 函数被应用到 numbers 列表的每个元素上,并返回一个新的列表 squared_numbers,其中包含了原列表中每个元素的平方。
多个可迭代对象
当 map() 函数接受多个可迭代对象时,它会并行地从每个可迭代对象中获取元素,并将这些元素作为参数传递给指定的函数。
python
def add(x, y):
return x + y
numbers1 = [1, 2, 3]
numbers2 = [4, 5, 6]
sums = list(map(add, numbers1, numbers2))
print(sums) # 输出: [5, 7, 9]
在这个例子中,add 函数被应用到 numbers1 和 numbers2 列表的对应元素上,并返回了一个新的列表 sums,其中包含了对应元素相加的结果。
注意事项
如果可迭代对象的长度不一致,并且 map() 接收了多个可迭代对象作为参数,那么返回的迭代器将只包含直到最短的可迭代对象结束的元素。
在Python 3中,map() 返回的是一个迭代器,而不是像Python 2中那样直接返回一个列表。如果你需要一个列表,你需要显式地将迭代器转换为列表。
map() 函数非常灵活,可以与匿名函数(如使用 lambda 表达式定义的函数)一起使用,以提供更简洁的代码。