# this is the list I have:

``````emissions=[30,50,20,70]
``````

# this is the list I would like to get:

``````f=[0,30,30,80,80,100,100,160)

such as:
f=[]
f[1]=emissions[0]
f[2]=emissions[0]
f[3]=emissions[0]+emissions[1]
f[4]=emissions[0]+emissions[1]
f[5]=emissions[0]+emissions[1]+emissions[2]
f[6]=emissions[0]+emissions[1]+emissions[2]
f[7]=emissions[0]+emissions[1]+emissions[2]+emissions[3]
``````

I believe the answer must consider some loop but I cant figure out how

### >Solution :

Use `numpy.cumsum` with append `0`, `numpy.repeat` with remove first and last repetead values by indexing if performance is important in large lists:

``````f = np.repeat(np.cumsum([0] + emissions), 2)[1:-1].tolist()
print (f)
[0, 30, 30, 80, 80, 100, 100, 170]
``````

``````np.random.seed(123)
emissions = np.random.randint(100, size=1000)

#Timeless solution
In [62]: %%timeit
...: cumsum = [0] + list(accumulate(emissions))
...: f = [x for pair in zip(cumsum, cumsum[1:]) for x in pair]
...:
242 µs ± 21.7 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [63]: %%timeit
...: np.repeat(np.cumsum([0] + emissions), 2)[1:-1].tolist()
...:
60.3 µs ± 1.73 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
``````