Python map()处理多个序列

  • Post category:Python

Python中的map()函数可以接收多个序列作为参数,对这些序列对应位置的元素进行并行操作,返回一个对应位置元素的迭代器。

map()函数的基本语法如下:

map(function, sequence[, sequence, ...])

其中,function是一个函数对象,它会被应用到序列中对应位置的元素上;sequence是一个或多个序列,它们对应位置的元素会被传入到function中处理。

下面是一些关于map()函数的示例说明。

示例1:对多个序列的并行操作

假设我们有两个列表a、b,我们需要将它们中对应位置的元素相加得到一个新的列表c。我们可以使用map()函数来实现:

a = [1, 2, 3, 4]
b = [10, 20, 30, 40]

def add(x, y):
    return x+y

c = list(map(add, a, b))
print(c) # 输出 [11, 22, 33, 44]

在这个例子中,我们定义了一个add函数,用于对两个数相加。然后我们把add函数作为map()函数的第一个参数,序列a和序列b作为第二个、第三个参数,将两个序列中对应位置的元素传递给add函数处理,得到一个新的列表c。

示例2:对字符串列表进行操作

另一个常见的用途是对一个字符串列表中的所有字符串进行操作。例如,我们可以将一个字符串列表中的所有元素转换为大写形式:

words = ['Hello', 'World', 'Python']
words_uppercase = list(map(str.upper, words))
print(words_uppercase) # 输出 ['HELLO', 'WORLD', 'PYTHON']

在这个例子中,我们使用了内置函数str.upper()将字符串转换为大写形式,然后将其作为map()函数的第一个参数传递。由于str.upper()不需要多个参数,我们只需要传入一个字符串序列作为map()函数的第二个参数,即可得到结果序列。