Ну, вы можете использовать numpy
, хотя это все равно превращает список в массив.
y = x + np.roll(x, 1)
y[0] = 0
Это быстро, коротко, довольно прозрачно и не использует (явно) for
loop.
Вы также можете использовать map
, что почти совпадает с пониманием списка и не требует никаких внешних библиотек.
y = 0 + map(lambda (a, b): a+b, zip(x, x[1:]))
В Python3 это не такт, и вместо этого вам нужно будет написать:
y = [0] + list(map(lambda a: a[0]+a[1], zip(x, x[1:])))
или
y = [0] + list(map(sum, zip(x, x[1:])))