如何将未知数量的变量输入函数?
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 函数的乘法变量。
我想知道如何将多个变量输入到我的函数中:
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 函数的乘法变量。