Понимание списка: создание нового списка путем добавления нескольких значений в один список - PullRequest
0 голосов
/ 15 сентября 2018

Учитывая список, содержащий ежемесячные числовые данные, как я могу легко преобразовать их в квартальные данные?

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], но х говорит, что х не повторяется.

Я не думаю, что это дубликат. Я специально ищу решение для понимания списка.

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Не сходя с ума, вы можете просто нарезать их и затем работать с каждой группой

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
0 голосов
/ 15 сентября 2018

Способ понимания списка:

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