python3.0 列表逆向相加求和?
a = [[1,100],[2,23],[6,456],[2,123],[6,456],[2,123],[6,456]]
我需要把所有的数依次相加求和
需要逆向2和相加(456+123)/2 = ....3个相加(456+123 + 456)/3 =........
最后这些和放到一个列表中
数据量大的情况下,有没有高效的写法。
我用
ct = []
for mas in range(1, len(a)):
sum_total = 0.0
for ma in range(mas):
sum_total += float(a[i - ma][1])
avg = sum_total/mas
ct.append(avg)
第二种
ct = []
for i in range(len(a)):
for s in range(i - 1, -1, -1):
avg = np.mean([float(a[t][1]) for t in range(s, i+1)])
ct.append(avg)
运行的时候 效率 太慢, 有没有高效的方法?
回复
1个回答
test
2024-06-25
你是指求索引1的后缀和吗
a = [[1,100],[2,23],[6,456],[2,123],[6,456],[2,123],[6,456]]
res = [0] * len(a)
res[-1] = a[-1][1]
for i in range(len(a) - 2, -1, -1):
res[i] = res[i + 1] + a[i][1]
print(res)
# [1737, 1637, 1614, 1158, 1035, 579, 456]
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容