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

标签 python list iterator list-comprehension

我正在寻找映射具有特定参数列表的函数。

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]

提前致谢!

最佳答案

这里没有需要使用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))

这里 xy 被称为未命名参数,abpartial 添加为 named 参数。

或者列表理解:

[add(x, y<b>, 3, 4</b>) for x, y in zip(list1, list2)]

关于python - 如何在python中映射具有多个参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47859209/

相关文章:

python - 将用户输入设置为变量名

python - 在python中向矩阵添加元素

python - 如何在某个字符后停止读取输入?

c++ - 类的二维 vector ,如何引用

java - 同时从 ArrayList 中删除两个对象而不引发 ConcurrentModificationException?

python - 使用 bool 掩码有效地将 numpy 数组的元素归零

python - 从 pandas 中的数据获取 header

c# - 将字符串解析为具有范围的整数列表

Python 遍历两个列表只遍历最后一个元素

迭代器停止后,Java 不会更改接口(interface)上的值