Python starmap()和map()应用数据

  • Post category:Python

Python中的map()starmap()函数用于对序列中的每个元素进行某种计算后返回一个新的序列,这两个函数有很多相似之处,同时也有一些差异。

Map函数

map()函数的语法如下:

map(function, iterable, ...)

其中,第一个参数function指定了对每个元素进行的操作函数,该函数可以接受一个参数,然后返回计算结果。第二个参数iterable则是一个可迭代对象,包含了需要进行计算的原始数据。

示例1:将列表中的每个元素都乘以2

data = [1, 2, 3, 4, 5]

def multiply_by_two(number):
    return number * 2

result = map(multiply_by_two, data)

print(list(result))   # 输出 [2, 4, 6, 8, 10]

示例2:将输入的字符串列表中的每个元素转换为大写字母

words = ['hello', 'world', 'python']

def uppercase(word):
    return word.upper()

result = map(uppercase, words)

print(list(result))    # 输出 ['HELLO', 'WORLD', 'PYTHON']

starmap函数

starmap()函数与map()函数类似,不同之处在于它可以接受多个参数,而且需要使用一个可迭代的参数将参数进行传递。在使用starmap()函数时,每个值都要与参数进行配对。正如下面的示例所示:

from itertools import starmap

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

data = [(1, 2), (3, 4), (5, 6)]

result = list(starmap(add_numbers, data))

print(result)   # 输出 [3, 7, 11]

在上面的示例中,我们可以看到传递给starmap()函数的数据包含了多个元组(x, y),其中xy均包含了两个值。通过调用starmap()函数,我们将每个元组中的两个值传递给了函数add_numbers()

再看下面的示例,我们可以将两个列表进行相加。

from itertools import starmap

def add_list(x, y):
    return [a + b for a, b in zip(x, y)]

data1 = [1, 2, 3]
data2 = [4, 5, 6]

result = list(starmap(add_list, [(data1, data2)]))

print(result)   # 输出 [[5, 7, 9]]

在这个示例中,我们定义了一个函数add_list(),用于将两个列表中的对应元素进行相加。在调用starmap()函数时,我们使用了一个包含两个列表的元组,该元组可以被同时传递给add_list()函数进行计算。

总之,Python中的map()starmap()函数都是很常用的函数,可以对列表、元组等数据类型进行快速计算,提高了代码执行的效率。