如何将未知数量的变量输入函数?

How to Enter an unknown number of variables into a function?

我想知道如何将多个变量输入到我的函数中:

def Dot_Product(Vector1,Vector2):
     return sum([x*y for x,y in zip(Vector1,Vector2)])   

print Dot_Product([1,2,1],[1,1,1])

我已经研究了 *args 和 **kwargs,但我不确定我将如何实现它,以便列表理解也将迭代未知数量的变量。我不确定它是否可能,所以如果有任何替代方案,他们将不胜感激。 我了解 *args 和 **kwargs 是如何工作的,但是我不确定如何实现一个列表理解,它会迭代未知数量的变量,因为在给出的示例中我只能迭代 x,y 或 x,y,z 或n number of lists 列出任何一个,只要我知道 n 是多少。由于我不知道如何更改列表理解来处理这个问题?

你可以试试这个方法:

multiplication = lambda x,y: x*y

def dot_product(*args):
    return sum([reduce(multiplication, arg) for arg in zip(*args)])

然后你可以传递任意数量的参数:

In [5]: print dot_product([1,2,1], [1,1,1])
4

In [6]: print dot_product([1,2,1], [1,1,1], [1,1,1])
4

您可以在此处查看 reduce 功能

我认为您还需要验证所有项目都是列表并且它们具有相同的长度。

此外,根据@PauloAlmeida 的建议,不需要乘法变量,因为标准库已提供给我们,我们可以这样导入它:

from operator import mul

然后我们可以使用 mul 而不是代表 reduce 函数上使用的 lambda 函数的乘法变量。