为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕粉3439496 2016-06-11 10:28:58
请问现在有一个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个,所以求大神给个程序。                                                                                                                      
查看完整描述

3 回答

已采纳
?
qq_青枣工作室_0

TA贡献446条经验 获得超754个赞

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


查看完整回答
3 反对 回复 2016-06-11
?
清波

TA贡献165条经验 获得超90个赞

既然有人给出, 循环求解列表生成式求解了, 那我就给出另一种解吧: 

强大的BIF

A = [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 更快,懒得测试了,有兴趣的同学可以试试。

查看完整回答
反对 回复 2016-06-20
?
qq_咖啡丶彼岸_03525439

TA贡献1条经验 获得超0个赞

# 楼上正解, 我再给个邪门歪道(要确保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]
查看完整回答
反对 回复 2016-06-17
  • 3 回答
  • 0 关注
  • 2108 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信