目录
Pass multiple arguments to the map() function in Python
将多个参数传递给 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()
函数首先调用multiply
1、6 和 1,然后调用 2、7 和 2,依此类推。
使用列表理解而不是 map() 函数
这是一个三步过程:
- 使用列表理解来迭代可迭代对象的每个元素。
- 调用该函数,将每个元素和额外参数传递给它。
- 列表理解将为每个元素调用该函数。
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() 函数
这是一个三步过程:
- 将处理程序函数和参数传递给该
functools.partial()
方法。 - 将结果和可迭代对象传递给函数
map()
。 - 处理函数将在每次迭代中被称为参数。
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() 函数中的索引的文章。