Python中的map()函数怎么用?
Python中的map()函数是一种内置的函数,用于对序列(列表,元组等)中的每个元素进行指定操作,并通过返回处理后的元素列表来返回结果。此外,map()函数是一种高阶函数,它接受一个函数和一个或多个序列为参数,可以让使用者用较少的代码处理大量数据。
map()函数的语法及用法:
1. 语法如下:
map(function, iterable, ...)
2. 参数说明:
- function:对iterable中的每个元素应用的函数。
- iterable:接受一个或多个序列作为参数,返回值是一个迭代器。
map()函数将 iterables 的每个元素传给给定的函数,并生成一个对象,该对象以函数处理后的结果组成的迭代器的形式返回。
在调用map()函数时,可以同时传递多个iterable参数,这些序列的元素将一一绑定,即第i个序列的第i个元素,将作为function的参数一同传入。
下面举一个例子:
# 定义一个函数,将数字转化成字符串,并返回
def num_to_str(num):
return str(num)
# 使用 map() 函数将下面列表中的数字转化成字符串
num_list = [1, 2, 3, 4, 5]
str_list = list(map(num_to_str, num_list))
print(str_list)
在上面的例子中,首先定义了一个 num_to_str() 函数,它的作用是将数字转化成字符串,并通过 return 返回结果。然后我们将 num_to_str() 函数作为第一个参数传递给 map() 函数,num_list 列表作为第二个参数传递。运行程序后,输出如下:
['1', '2', '3', '4', '5']
可以看到,使用 map() 函数将 num_to_str() 函数作用于 num_list 中的每一个元素,成功将数字转化成字符串,并返回处理后的 str_list 列表。
除了使用自定义的函数,我们也可以使用 Python 内置的函数或者匿名函数来处理:
1. 内置函数
# 使用 map() 函数将下面列表中的数字取平方根 num_list = [1, 2, 3, 4, 5] sqrt_list = list(map(math.sqrt, num_list)) print(sqrt_list)
在上面的例子中,我们使用 Python 中的 math.sqrt 函数作为第一个参数传递给 map() 函数。运行程序后,输出如下:
[1.0, 1.4142135623730951, 1.7320508075688772, 2.0, 2.23606797749979]
2. 匿名函数
# 使用 map() 函数将下面列表中的数字加 2,然后取其平方 num_list = [1, 2, 3, 4, 5] new_list = list(map(lambda x: (x+2)**2, num_list)) print(new_list)
在上面的例子中,我们使用 Python 的 lambda 匿名函数来定义函数,对 num_list 中的每一个元素进行操作。运行程序后,输出如下:
[9, 16, 25, 36, 49]
从上面的例子中可以看到,map() 函数可以根据需要适应不同的场景,并且可以通过自定义函数、内置函数或者匿名函数来进行操作。
需要注意的是,map() 函数返回的是一个迭代器,而不是一个列表。因此,要将迭代器转化成列表时,需要使用 list() 函数来完成。
map() 函数还有一些常用的用法,如:
1. 将多个列表中的元素按照一定规则组合
# 将两个列表中的元素一一组合 list1 = [1, 2, 3, 4, 5] list2 = [6, 7, 8, 9, 10] result = list(map(lambda x,y:(x,y),list1,list2)) print(result)
在上面的例子中,我们将 list1 和 list2 中的元素一一进行组合,并返回一个新的元素为元组的列表。运行程序后,输出如下:
[(1, 6), (2, 7), (3, 8), (4, 9), (5, 10)]
2. 将列表中的元素进行过滤
# 判断列表中的元素是否大于 3 list1 = [1, 2, 3, 4, 5] result = list(filter(lambda x:x>3,list1)) print(result)
在上面的例子中,我们使用 filter() 函数来对 list1 中的元素进行筛选,仅返回大于 3 的元素,并将返回的过滤器转化成列表。运行程序后,输出如下:
[4, 5]
综上所述,map() 函数是一种非常实用的高阶函数,在处理大数据量时可以大大简化代码,提高效率。需要注意的是,虽然 map() 函数非常方便,但在 Python3 中使用时,需要转换为列表才能使用,否则将返回一个迭代器。
