如何在python中映射具有多个参数的函数

时间:2017-12-17 20:38:25

标签: python iterator

我希望将一个函数映射到具有特定参数的列表。

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

list1 = [1, 2, 3]
list2 = [3, 4, 5]

经过一些研究,我能够使用maplambda函数成功完成此操作。

list(map(lambda x, y: add(x, y), list1, list2))

我想知道,使用迭代器做这个更好吗?我尝试了以下但无法弄清楚:

[add(x, y), for x, y in list1, list2]

[add(x, y), for x in list1 for y in list2]

提前致谢!

1 个答案:

答案 0 :(得分:3)

这里有 no 需要使用lambda表达式,你可以直接传递对te函数的引用:

list(map(add, list1, list2))

如果您想使用列表理解,可以使用zip

[add(x, y) for x, y in zip(list1, list2)]

zip获取 n iterables,并生成 n -tuples,其中 i -th元组包含 i 每个可迭代的元素。

如果您想为某些参数添加默认值,可以使用partial中的functools。例如,如果您定义:

def add (x, y, a, b):
    return x + y + a + b
from functools import partial

list(map(partial(add, a=3, b=4), list1, list2))

此处xy因此被称为未命名的参数,ab被添加为partial 命名参数。

或者列表理解:

[add(x, y, 3, 4) for x, y in zip(list1, list2)]