当前位置: 代码迷 >> python >> 列表理解:通过在单个列表中添加多个值来创建新列表
  详细解决方案

列表理解:通过在单个列表中添加多个值来创建新列表

热度:78   发布时间:2023-07-14 08:46:03.0

给定一个包含每月数字数据的列表,我如何轻松地将其转换为季度数据?

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 不可迭代。

我不认为这是重复的。 我特别在寻找列表理解解决方案。

列表理解方式:

[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])

不要发疯,您可以将它们切碎,然后与每个组一起工作

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
  相关解决方案