Python 在列表列表的相同索引中添加数字

Python 在列表列表的相同索引中添加数字,python,list,list-comprehension,Python,List,List Comprehension,假设我有一个列表a=[[1,2,3,4],[5,6,7,8],[9,10,11,12]。我想创建一个新列表,b,新列表中的每个值都是每个子列表的索引位置中所有值的总和。 因此,在这种情况下,它将是[15,18,21,24](1+5+9,2+6+10,3+7+11,4+8+12) . 这就是我的代码目前的样子 a=[[1,2,3,4],[5,6,7,8],[9,10,11,12]] for i in range(len(a)+1): b.append(sum(b[i] for b in a

假设我有一个列表
a=[[1,2,3,4],[5,6,7,8],[9,10,11,12]
。我想创建一个新列表,
b
,新列表中的每个值都是每个子列表的索引位置中所有值的总和。 因此,在这种情况下,它将是
[15,18,21,24]
(1+5+9,2+6+10,3+7+11,4+8+12) . 这就是我的代码目前的样子

a=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
for i in range(len(a)+1):
    b.append(sum(b[i] for b in a))
print(b)
>>> [15, 18, 21, 24]
我尝试使用列表理解来简化为:

b=[sum([c[i]]表示a中的c)表示范围内的i(len(a)+1)]

但是,我得到一个错误
TypeError:不支持+:'int'和'list'的操作数类型

我试着用谷歌搜索这个问题,但我能找到的只是人们在整数中添加列表。在这段代码中,它应该只添加整数(
a[c[i]]
)。我做错了什么

编辑:正如马克·伊特尔所指出的那样,
[c[i]]
应该是
c[i]
。然而,正如亚图所指出的,使用
map
zip
要简单得多。 正如大家所指出的,它不应该是
len(a)+1
,而是
len(a[0])


谢谢大家

这可以通过使用python的内置程序来完成:

list(map(sum,zip(*a)))
#[15, 18, 21, 24]
您的方法会产生预期的结果,但不确定如何定义
b
?如果它是一个空列表
b=[]
,则可以正常工作。 另外,对于范围(len(a)+1)中的i,您是否确定-
?。您不应该迭代内部列表中的项目吗

您的理解列表应为:

[sum(b[i] for b in a) for i in range(4)]
# [15, 18, 21, 24]

在您的代码中,在内部级别有
[c[i]]
。您正在生成一个不需要的列表列表。只需为列表编制索引并保留整数
b[i]

,使用python的内置功能即可完成此操作:

list(map(sum,zip(*a)))
#[15, 18, 21, 24]
您的方法会产生预期的结果,但不确定如何定义
b
?如果它是一个空列表
b=[]
,则可以正常工作。 另外,对于范围(len(a)+1)
中的i,您是否确定-
?。您不应该迭代内部列表中的项目吗

您的理解列表应为:

[sum(b[i] for b in a) for i in range(4)]
# [15, 18, 21, 24]

在您的代码中,在内部级别有
[c[i]]
。您正在生成一个不需要的列表列表。只需为列表编制索引并保留整数
b[i]

以下代码可能适合您的需要:

[邮政编码(*a)中项目的总和(项目)]

以下代码可能适合您的需要:

[邮政编码(*a)中项目的总和(项目)]

总和中,您试图添加列表,删除括号可以解决您的问题

而且,
i
结束于
len(a[0])
,而不是
len(a)+1

>a=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
>>>[求和(c[i]表示a中的c)表示范围(len(a[0])中的i]
[15, 18, 21, 24]

总和中,您试图添加列表,删除括号可以解决您的问题

而且,
i
结束于
len(a[0])
,而不是
len(a)+1

>a=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
>>>[求和(c[i]表示a中的c)表示范围(len(a[0])中的i]
[15, 18, 21, 24]

没有地图。没有射程。这就是我要写的,没有地图。没有射程。这是我应该写的。