欢迎访问宙启技术站
智能推送

map()函数详解:如何将函数映射到序列上

发布时间:2023-05-27 01:21:36

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中一种常用的函数,可以用于将函数应用于一个序列中的每个元素,并将结果存储到新的列表中。它提供了简洁而高效的方式来处理序列数据,十分实用。