我想编写一个计算几个向量的标量和的函数。它应该采用几个列表作为参数,例如。
def add_lists(x, y, z):
# return sum of x, y, z
x = add_lists([1, 2],[2, 1],[3, 1])
# x returns [6, 4]
只有两个参数很容易做到这一点,但如果它们超过两个,我怎么能用* args来做呢,这样我的add_lists
会返回[6,4]?
答案 0 :(得分:4)
您可以使用zip
和*args
:
def add_lists(*args):
return [sum(x) for x in zip(*args)]
x = add_lists([1, 2],[2, 1],[3, 1])
# x is [6, 4]
答案 1 :(得分:1)
你也可以这样做:
def add_lists(*args):
s1 = sum(i[0] for i in args)
s2 = sum(i[1] for i in args)
return [s1,s2]
res = add_lists([1, 2],[2, 1],[3, 1])
print(res)
输出:
[6, 4]
答案 2 :(得分:0)
如果我正确理解你的问题,你希望编写一个可以接受任意数量向量并返回总和的函数吗?那么是的,你需要像*args
这样使用:
def add_lists(*args):
final_vector = [0, 0]
for vector in args:
final_vector[0] += vector[0]
final_vector[1] += vector[1]
return final_vector
基本上,将args
视为一个列表 - 包含调用函数时传递的所有参数。