不带求和功能的两个列表彼此求和

时间:2019-06-16 17:09:31

标签: python list

我正在编写有关两个列表和sum元素的代码,而不使用sum函数。因此,我需要返回其元素的总和。如何定义列表c和列表a和b的总数

下面的代码是我已经尝试过的。

def add(list_a, list_b):
    list_a = [1, 2, 3, 4, 5]
    list_b = [1, 2, 3, 4, 5]
    list_c = []

for i in range (0,5):
    list_c.append(list_a[i]+second[i])

print (list_c)

错误代码:

  

文件“ sum.py”,第7行,位于

     

list_c.append(list_a [i] + second [i])

     

NameError:未定义名称“ list_c”

3 个答案:

答案 0 :(得分:1)

您有缩进问题。如果缩进for块和print语句,它应该可以工作。您也有错字,second[i]应该是list_b[i]

def add(list_a, list_b): 
    list_c = [] 

    for i in range(0,5): 
        list_c.append(list_a[i]+list_b[i]) 

    return(list_c)

list_a = [1, 2, 3, 4, 5] 
list_b = [1, 2, 3, 4, 5]

print(add(list_a, list_b))
# [2, 4, 6, 8, 10]

写这个的一个很短的方法是:

print([x+y for x,y in zip(list_a, list_b)])

仅当列表具有相同长度时才有效。

答案 1 :(得分:1)

有两个问题。首先,您不需要在函数内定义列表,其次,您将第二个列表引用为second而不是list_b。以下是您所需要的:

list_a = [1, 2, 3, 4, 5]
list_b = [1, 2, 3, 4, 5]
list_c = []

for i in range(0, 5):
    list_c.append(list_a[i] + list_b[i])

print (list_c)

或者,如果您想将其用作可重用函数,则可以将循环逻辑移入该函数本身,并将列表作为参数传递:

def add(list_a, list_b): 
    summed_list = [] 

    for i in range(0, 5): 
        summed_list.append(list_a[i] + list_b[i]) 

    return summed_list

summed = add([1, 2, 3, 4, 5], [1, 2, 3, 4, 5])
print(summed)

答案 2 :(得分:0)

您可以使用map来达到以下目的:

list_a = [1, 2, 3, 4, 5]
list_b = [1, 2, 3, 4, 5]
def add(a,b):
    return list(map(lambda x,y:x+y,list_a,list_b))
print(add(list_a,list_b))

输出:

[2, 4, 6, 8, 10]