将多个参数传递给 Python 中的 map() 函数

目录

Pass multiple arguments to the map() function in Python

  1. 将多个参数传递给 map() 函数
  2. 使用列表理解而不是 map() 函数
  3. 使用 partial() 将多个参数传递给 map() 函数
  4. 使用 repeat() 将多个参数传递给 map() 函数

将多个参数传递给 map() 函数

您可以传递一个函数,然后将多个可迭代对象传递给该map()函数。

map()函数将使用每个可迭代对象中的一个项目调用提供的函数。

主程序
def multiply(a, b): return a * b list_1 = [1, 2, 3, 4, 5] list_2 = [6, 7, 8, 9, 10] new_list = list(map(multiply, list_1, list_2)) print(new_list) # 👉️ [6, 14, 24, 36, 50]

map ()函数将一个函数和一个或多个可迭代对象作为参数,并使用可迭代对象的每一项调用该函数。

map()函数首先使用multiply()数字 1 和 6 调用函数,然后使用数字 2 和 7,依此类推。

您可以根据需要将此方法用于尽可能多的可迭代对象。

但是,请确保您传递给的函数map采用与可迭代对象一样多的参数。

主程序
def multiply(a, b, c): return a * b * c list_1 = [1, 2, 3, 4, 5] list_2 = [6, 7, 8, 9, 10] list_3 = [1, 2, 3, 4, 5] new_list = list(map(multiply, list_1, list_2, list_3)) print(new_list) # 👉️ [6, 28, 72, 144, 250]

请注意,该multiply函数现在有 3 个参数。

它从每个可迭代对象中调用 1 个项目。

map()函数首先调用multiply1、6 和 1,然后调用 2、7 和 2,依此类推。

使用列表理解而不是 map() 函数

这是一个三步过程:

  1. 使用列表理解来迭代可迭代对象的每个元素。
  2. 调用该函数,将每个元素和额外参数传递给它。
  3. 列表理解将为每个元素调用该函数。
主程序
def example_func(item, extra_arg): print(item, extra_arg) return item + extra_arg my_list = [1, 2, 3, 4] my_arg = 100 new_list = [example_func(item, my_arg) for item in my_list] print(new_list) # 👉️ [101, 102, 103, 104]

列表推导用于对每个元素执行一些操作,或者选择满足条件的元素子集。

map ()函数将一个函数和一个可迭代对象作为参数,并使用可迭代对象的每个项目调用该函数。

在大多数情况下map(),您可以只使用列表推导式,而不是使用 ,让您的代码更易于阅读。

使用 partial() 将多个参数传递给 map() 函数

这是一个三步过程:

  1. 将处理程序函数和参数传递给该functools.partial()
    方法。
  2. 将结果和可迭代对象传递给函数map()
  3. 处理函数将在每次迭代中被称为参数。
主程序
from functools import partial my_list = [1, 2, 3, 4] def example_func(item, extra_arg): print(item, extra_arg) return item + extra_arg my_arg = 100 new_list = list( map(partial(example_func, extra_arg=my_arg), my_list) ) print(new_list) # 👉️ [101, 102, 103, 104]

我们使用
functools.partial
方法将多个参数传递给函数
map()

该方法接受一个函数、位置参数和关键字参数,并返回一个部分对象。

当调用部分对象时,它的行为就像使用提供的参数调用函数一样。

使用该functools.partial()方法时,最好将参数作为关键字参数传递,以免混淆顺序。

# 使用 repeat() 将多个参数传递给 map() 函数

您还可以使用模块repeat中的类itertools将多个参数传递给函数map()

主程序
from itertools import repeat def multiply(a, b): return a * b list_1 = [1, 2, 3, 4, 5] new_list = list(map(multiply, list_1, repeat(5))) print(new_list) # 👉️ [5, 10, 15, 20, 25]

itertools.repeat
类生成一个迭代器,它一遍又一遍地返回

定的对象。

您可以想象map()函数调用multiply列表中的每一项和数字,5因为这是我们传递给
itertools.repeat()类的内容。

5在示例中,列表中的每个数字都被乘以。

我还写了一篇关于
如何访问 map() 函数中的索引的文章。