编写一个使用* args添加列表元素的函数

时间:2017-12-07 11:25:56

标签: python algorithm list sum

我想编写一个计算几个向量的标量和的函数。它应该采用几个列表作为参数,例如。

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]?

3 个答案:

答案 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视为一个列表 - 包含调用函数时传递的所有参数。