问题描述
给定一个包含每月数字数据的列表,我如何轻松地将其转换为季度数据?
x= [5,8,3,4,5,6,1,2,5,3,11,8] #monthly data for Jan-Dec
期望的输出:
[5+8+3, 4+5+6, 1+2+5, 3+11+8] #converted to quarterly data
我想做类似[a+b+c for a,b,c in x]
但 x 它说 x 不可迭代。
我不认为这是重复的。 我特别在寻找列表理解解决方案。
1楼
列表理解方式:
[sum([x[i],x[i+1],x[i+2]]) for i in range(0,len(x),3)]
#[16, 15, 8, 22]
或者以更好的方式(感谢@JonClements):
[sum(x[i:i+3]) for i in range(0, len(x), 3)]
还有一种numpy
方式:
import numpy as np
np.sum(np.array(x).reshape(-1,3),axis=1)
#array([16, 15, 8, 22])
2楼
不要发疯,您可以将它们切碎,然后与每个组一起工作
x= [5,8,3,4,5,6,1,2,5,3,11,8]
a, b, c, d = x[:3], x[3:6], x[6:9], x[9:12]
print(a, b, c, d)
(xenial)vash@localhost:~/python/stack_overflow$ python3.7 slice_q.py [5, 8, 3] [4, 5, 6] [1, 2, 5] [3, 11, 8]
从这里如果你想总结每组你可以做这样的事情
lista = [a, b, c, d,]
for i in lista:
print(sum(i))
16 15 8 22