求大神解答python中的计算求和

请问现在有一个A list和一个B list,每个list中都有100个整数,我想计算得出一个新的c list, c list中的每项是这样的,A[0],,A[1]+B[0],,A[2]+B[1]+B[0],,A[3]+B[2]+B[1]+B[0]...............A[100]+B[99]+B[98]+B[97]+.......B[1]+B[0],,,,求大神解答?

给个简单的例子吧,假如A = [30,52,84,92],,,B = [4,3,2,1],,,我现在想得到Clist [30,56,91,101]。30即A[0],56即A[1]+B[0],以此类推,但是我现在有很多数据,远远超过4个,所以求大神给个程序。

                                                                                                                      

慕粉3439496
浏览 2109回答 3
3回答

qq_青枣工作室_0

A = [30,52,84,92] B = [4,3,2,1] C = [] for i in range(len(A)):     C.append(A[i] + sum(B[0:i])) print C

清波

既然有人给出, 循环求解 和 列表生成式求解了, 那我就给出另一种解吧: 强大的BIFA = [30,52,84,92] B = [4,3,2,1] C = map(lambda x:x[1]+sum(b[0:x[0]]),enumerate(a)) ## Python 3.x 需要对 map 函数 列表化(不建议对map 类型列表化, 否则官方就白白升级map函数了): C = list(map(lambda x:x[1]+sum(b[0:x[0]]),enumerate(a)))最后,纠正 提供列表生成式 解答的一点bug, 如果 A 列表中 有重复的元素, 用 A.index(a) 来获取元素的 index 是错误的, 所以建议 列表生成式求解 这么写:c = [value+sum(b[0:index]) for index,value in enumerate(a)]我猜 这个才是这个问题的最优解,也许比 map 更快,懒得测试了,有兴趣的同学可以试试。

qq_咖啡丶彼岸_03525439

# 楼上正解, 我再给个邪门歪道(要确保listA中的元素不重复才行)A = [30,52,84,92] B = [4,3,2,1] print [a+sum(B[0:A.index(a)]) for a in A]     # [30, 56, 91, 101]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python