我希望将一个函数映射到具有特定参数的列表。
def add(x, y):
return(x + y)
list1 = [1, 2, 3]
list2 = [3, 4, 5]
经过一些研究,我能够使用map
和lambda
函数成功完成此操作。
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]
提前致谢!
答案 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))
此处x
和y
因此被称为未命名的参数,a
和b
被添加为partial
命名参数。
或者列表理解:
[add(x, y, 3, 4) for x, y in zip(list1, list2)]