map()函数详解:如何将函数映射到序列上
map()函数是Python内置的一种函数,它将一个函数应用于一个可迭代对象的每个元素,将结果作为一个新的列表返回。它常用于将一个函数应用于一个序列中的每个元素,然后使用新列表中的结果进行其他操作。
map()函数的语法如下:
map(function, iterable,...)
其中,function是一个函数,可以是Python标准库中的函数或用户自定义的函数;iterable是一个或多个序列,可以是列表、元组、字符串等可以迭代的对象。
大家可以先看下面的例子:
例如,要将列表中的数字全部平方并存储到一个新的列表中,就可以使用map()函数:
lst = [1, 2, 3, 4, 5] squared_lst = list(map(lambda x: x**2, lst)) print(squared_lst) # [1, 4, 9, 16, 25]
上述代码中,对lst列表中的每个元素应用了一个lambda函数,该函数将每个元素平方。map()函数返回了一个迭代器对象,我们使用list()函数将其转换为列表并存储到squared_lst列表中。
除了lambda函数以外,我们也可以使用标准库中的函数来应用于列表元素。例如,要获取一个字符串列表中所有字符串元素的长度,可以使用len()函数和map()函数:
lst = ['apple', 'banana', 'cherry'] length_lst = list(map(len, lst)) print(length_lst) # [5, 6, 6]
上述代码中,map()函数将len()函数应用于lst列表中的每个字符串元素,获取其长度。
当有多个序列作为输入时,map()函数将对它们进行并行迭代,并依次将每个序列中的元素传入函数中。例如:
lst1 = [1, 2, 3, 4, 5] lst2 = [6, 7, 8, 9, 10] added_lst = list(map(lambda x, y: x+y, lst1, lst2)) print(added_lst) # [7, 9, 11, 13, 15]
上述代码中,map()函数将lambda函数应用于lst1和lst2两个列表中的元素,并将对应元素相加。结果返回一个新的列表并存储到added_lst列表中。
需要注意的是,当序列的长度不同时,map()函数会截取最短的序列的长度,用于迭代函数。例如:
lst1 = [1, 2, 3] lst2 = [4, 5, 6, 7, 8] added_lst = list(map(lambda x, y: x+y, lst1, lst2)) print(added_lst) # [5, 7, 9]
上述代码中,lst1和lst2序列的长度不同,map()函数只对lst1的前三个元素和lst2的前三个元素进行了迭代。
总之,map()函数是Python中一种常用的函数,可以用于将函数应用于一个序列中的每个元素,并将结果存储到新的列表中。它提供了简洁而高效的方式来处理序列数据,十分实用。
