Python 自动将不同索引的值相加

Python 自动将不同索引的值相加,python,Python,我有一个列表(a),其中包含对另一个列表(b)的引用。我试图创建第三个列表(c),其中包含(a)相应索引中引用的(b)的汇总值。下面是一个例子,希望能让它更清楚 我有一个相当大的数据集,这需要作为优化过程的一部分经常进行。除了嵌套for循环之外,还有没有一种方法可以高效、自动化地完成这项工作,而不必定义c的每个条目 a = [[0],[0,3],[1,2],[3],[1,2,3]] b = [10,20,30,40] c = [b[0], b[0]+b[3], b[1]+b[2], b[3],

我有一个列表(a),其中包含对另一个列表(b)的引用。我试图创建第三个列表(c),其中包含(a)相应索引中引用的(b)的汇总值。下面是一个例子,希望能让它更清楚

我有一个相当大的数据集,这需要作为优化过程的一部分经常进行。除了嵌套for循环之外,还有没有一种方法可以高效、自动化地完成这项工作,而不必定义c的每个条目

a = [[0],[0,3],[1,2],[3],[1,2,3]]
b = [10,20,30,40]
c = [b[0], b[0]+b[3], b[1]+b[2], b[3], b[1]+b[2]+b[3]]

提前感谢您的帮助,并对帖子中可能出现的错误表示歉意。这是我的第一次,我正在努力学习

不确定您是否只需要纯python,但如果不需要,您可以使用:


不确定您是否只需要纯python,但如果不需要,您可以使用:


您可以在列表理解中执行此操作:它从
a
中的每个内部列表中获取索引,构建相应
b
值的列表,对它们进行汇总,并将它们存储在分配给
d
的列表中

a = [[0], [0, 3], [1, 2], [3], [1, 2, 3]]
b = [10, 20, 30, 40]

d = [sum(b[idx] for idx in indices) for indices in a]
print(d)
输出:
您可以在列表理解中执行此操作:它从
a
中的每个内部列表中获取索引,构建相应
b
值的列表,对它们进行汇总,并将它们存储在分配给
d
的列表中

a = [[0], [0, 3], [1, 2], [3], [1, 2, 3]]
b = [10, 20, 30, 40]

d = [sum(b[idx] for idx in indices) for indices in a]
print(d)
输出:
您已经尝试了什么?您已经尝试了什么?我太晚了,无法添加纯python解决方案,所以将其从我的答案中删除以避免重复。我的猜测是,对于更大的阵列,numpy的工作速度会更快,但这只是一个猜测,您可以使用numpy更进一步。它接受一个数组作为另一个数组的“投影”。先生们,我同意你们的观点,尽管我怀疑OP在这个阶段想要一个numpy解决方案。没错,而且在任何情况下,知道纯python解决方案总是好的。我添加纯python解决方案有点晚了,所以从我的答案中删除它以避免重复。我的猜测是,对于更大的阵列,numpy的工作速度会更快,但这只是一个猜测,您可以使用numpy更进一步。它接受一个数组作为另一个数组的“投影”。先生们,我同意你们的观点,尽管我怀疑OP在这个阶段想要一个numpy解决方案。没错,无论如何,了解纯python解决方案总是好的
[10, 50, 50, 40, 90]