我正在寻找映射具有特定参数列表的函数。
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]
提前致谢!
最佳答案
这里没有需要使用lambda表达式,你可以直接传递一个对te函数的引用:
list(map(<b>add</b>, list1, list2))
如果你想使用列表理解,你可以使用zip
:
[add(x, y) for x, y in <b>zip(</b>list1, list2<b>)</b>]
zip
采用 n 个可迭代对象,并生成 n 个元组,其中第 i 个元组包含 < em>i - 每个可迭代对象的第一个元素。
如果您想为某些参数添加默认值,可以使用 functools
中的 partial
。例如,如果您定义一个:
def add (x, y, a, b):
return x + y + a + b
<b>from functools import partial</b>
list(map(<b>partial(</b>add<b>, a=3, b=4)</b>, list1, list2))
这里 x
和 y
被称为未命名参数,a
和 b
由 partial
添加为 named 参数。
或者列表理解:
[add(x, y<b>, 3, 4</b>) for x, y in zip(list1, list2)]
关于python - 如何在python中映射具有多个参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47859209/