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

Python中的map()函数:使用方法和案例分析?

发布时间:2023-06-18 09:55:07

map()函数是Python内置函数之一,用于将一个序列(list、tuple等)的每个元素都执行某个函数操作,然后返回一个新序列。map()函数的使用方法非常简单,其通用语法如下:

map(function, iterable, ...)

其中,function是一个函数,iterable可以是一个或多个序列,返回值是一个可迭代的map对象。

function函数必须至少接收一个参数,该参数代表iterable的元素,而map()函数的返回结果则让每一个元素都被function函数处理了一遍。

例如,我们可以使用map()函数将一个整数列表中的每个元素都加上2,得到一个新的列表。实现代码如下:

def add2(x):
    return x + 2  # 对每个元素加2

num_list = [1, 2, 3, 4, 5]  # 整数列表
new_list = list(map(add2, num_list))  # 新列表

print(new_list)  # 输出:[3, 4, 5, 6, 7]

在这个例子中,我们定义了一个函数add2(),作用是对传入的参数加2。接着,我们定义了一个整数列表num_list,然后使用map()函数将其每个元素都传给add2()函数进行加2操作,并将结果返回给一个新的列表new_list。

可以看到,map()函数的使用方式非常简单,只需要定义好一个处理函数即可。下面我们来看一些其他的案例。

## 用map()函数实现两个列表对应元素相加

可以使用map()函数将两个列表的对应元素相加,实现代码如下:

list1 = [1, 2, 3, 4, 5]  # 第一个列表
list2 = [2, 4, 6, 8, 10]  # 第二个列表

# 对应元素相加的函数
def add(x, y):
    return x + y  

new_list = list(map(add, list1, list2))  # 新列表

print(new_list)  # 输出:[3, 6, 9, 12, 15]

在这个例子中,我们定义了一个函数add(),对两个参数进行相加操作。接着,我们定义了两个列表list1和list2,并使用map()函数将其对应的元素都传给add()函数进行相加操作,并将结果返回给一个新的列表new_list。

## 用map()函数处理一个字符串列表

可以使用map()函数处理一个字符串列表,例如将字符串中的每一个元素转为小写,实现代码如下:

str_list = ['HELLO', 'WORLD', 'PYTHON']

# 将字符串转为小写的函数
def lower_str(str):
    return str.lower()  

new_list = list(map(lower_str, str_list))  # 新列表

print(new_list)  # 输出:['hello', 'world', 'python']

在这个例子中,我们定义了一个函数lower_str(),作用是将传入的字符串转为小写。接着,我们定义了一个字符串列表str_list,并使用map()函数将其每个元素都传给lower_str()函数进行转换操作,并将结果返回给一个新的列表new_list。

## 使用map()函数处理二维列表

可以使用map()函数处理一个二维列表,例如将每行元素中的最大值找出来,实现代码如下:

num_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]  # 二维列表

# 找出一行中的最大值
def max_num(row):
    return max(row)  

new_list = list(map(max_num, num_list))  # 新列表

print(new_list)  # 输出:[3, 6, 9]

在这个例子中,我们定义了一个函数max_num(),作用是找出传入的列表中的最大值。接着,我们定义了一个二维列表num_list,并使用map()函数将其每个行元素都传给max_num()函数进行处理操作,并将结果返回给一个新的列表new_list。

## 使用lambda表达式

map()函数在和lambda表达式结合使用时非常方便,这样可以避免定义额外的处理函数。例如,在前面的例子中我们可以使用lambda表达式来表示处理函数,如下所示:

str_list = ['HELLO', 'WORLD', 'PYTHON']

new_list = list(map(lambda x: x.lower(), str_list))  # 新列表

print(new_list)  # 输出:['hello', 'world', 'python']

这个例子和之前的例子本质上是一样的,只不过这里使用了lambda表达式来表示将传入的元素转为小写。

可以看到,lambda表达式和map()函数的组合可以非常简洁地完成某些操作,特别是一些简单的数据处理操作。