adjacent differences with a list comprehension
Mario A. Botto
mariobot at yahoo.com
Tue Apr 1 18:25:56 EST 2003
pschmidt at omnimn.com (Phil Schmidt) wrote in message news:<69413f9.0303241331.62f0295f at posting.google.com>...
> Given a list of numbers, such as:
>
> L = [2, 5, 8, 3, 9, 1]
>
> I want to generate a list containing the differences between adjacent
> elements, i.e.,
>
> Ld = [3, 3, -5, 6, -8]
>
> I don't see how I can do this (easily/elegantly) with list
> comprehensions.
>
> Any suggestions? Thanks!
Hi.
How about this?
If, say, L1 = [a1, a2, a3], L2 = [b1, b2, b3, b4, b5], then
zip(L1, L2) = [(a1,b1), (a2,b2), (a3, b3)]. Hence,
[a - b for (a,b) in zip(L1, L2)] = [a1-b1, a2-b2, a3-b3]
This solves your problem if you set L1 = L, L2 = L[1:]. That is,
Ld = [a - b for (a,b) in zip(L[1:], L)]
print 'Ld: ', Ld
>> Ld: [3, 3, -5, 6, -8]
Cheers.
More information about the Python-list
mailing list