将多个列表中的第一个值相加

Posted

技术标签:

【中文标题】将多个列表中的第一个值相加【英文标题】:Adding first value together from multiple lists 【发布时间】:2022-01-15 06:44:02 【问题描述】:

我正在尝试将第一个值添加到一系列列表中,然后将第二个值添加到一系列列表中,依此类推。

例如:

a=[10,20,30,40,50]
b=[60,70,80,90,100]
c=[110,120,130,140,150]

所以我想要的结果是:

[180, 210,240, 270, 300]

我目前的代码是:

total = 0
for I in range (0,a)
total = total +a[I]+b[I]+c[I]
return total

【问题讨论】:

这里显示的代码有什么问题? 这能回答你的问题吗? How to iterate through two lists in parallel? 【参考方案1】:

需要在您的代码中更正缩进。此外,收集列表中特定索引的元素的总和。如果您只是添加元素,它将添加所有元素,只给您所有事物的总和。此外,在 for 循环语句中,它应该是 len(a) 而不仅仅是 a。您更正的代码:

a=[10,20,30,40,50]
b=[60,70,80,90,100]
c=[110,120,130,140,150]
sums=[]
for i in range(0,len(a)):
    sums.append(a[i]+b[i]+c[i])
print(sums)

【讨论】:

【参考方案2】:
total = 0
for I in range (0,a):
    total = total +a[I]+b[I]+c[I]
return total

因此,您的代码存在一些问题。

    您不能使用range(0,a)a 是列表而不是整数。您必须使用列表的长度,或len(a)

    根据PEP8 standards,您也不应该使用大写字母作为变量,除非它们是常量变量。

    您正在尝试返回不在函数内部的数据。那是行不通的。 你可以这样做:

def add_vals_from_lists(a,b,c):
    total = 0
    for i in range(len(a)):
        total += sum([a[i], b[i], c[i]])
        # The above is a much cleaner way to write total = total +a[I]+b[I]+c[I]
    return total

a=[10,20,30,40,50]
b=[60,70,80,90,100]
c=[110,120,130,140,150]

add_vals_from_lists(a,b,c)

或者,您可以只使用print(total) 而不是使用return total

但是,这只会将所有内容添加到总返回 1200 中,而不是您想要的。

正如 Samwise 和 Pedro 所指出的,您可以简单地将其写在 list-comprehension 中。 [sum(t) for t in zip(a, b, c)]

zip() - 并行迭代多个可迭代对象,生成元组,每个元组都有一个项目。对于这些元组中的每一个,第一个是 (10,60,110),列表理解将 sum() 每个。生成[180, 210, 240, 270, 300] 列表。

【讨论】:

【参考方案3】:

sumzip 函数与简单的列表理解一起使用:

total = [sum(i) for i in zip(a,b,c)]

或者遍历索引:

total = []
for i in range(len(a)):
    total.append(a[i] + b[i] + c[i])

total 必须是 list,并且您必须在每次迭代中使用 append

【讨论】:

【参考方案4】:

使用zip获取每个列表的第一个元素,然后sum他们:

>>> a=[10,20,30,40,50]
>>> b=[60,70,80,90,100]
>>> c=[110,120,130,140,150]
>>> [sum(t) for t in zip(a, b, c)]
[180, 210, 240, 270, 300]

【讨论】:

以上是关于将多个列表中的第一个值相加的主要内容,如果未能解决你的问题,请参考以下文章

如何计算 groupby 对象中包含的多个列表并将该组列表中的每个值的计数相加

Pandas:按两列分组,将第一列组中的第一个值相加

将下拉列表中的第一个值设置为 php 中的默认值

根据值中的第一个字符将数组分成多个数组

如何将数据框列表除以值列表?

Ajax发布仅返回多个选择框的第一个值[关闭]