166 votes

Python : Trouver les différences entre les éléments d'une liste

Compte tenu d'une liste de nombres, comment peut-on trouver des différences entre chaque (i)ème élément et son (i+1)ème ?

Est-il préférable d'utiliser une expression lambda ou peut-être une compréhension de liste ?

Par exemple :

Compte tenu d'une liste t=[1,3,6,...], l'objectif est de trouver une liste v=[2,3,...] 3-1=2 6-3=3, etc.

202voto

SilentGhost Points 79627
>>> t
[1, 3, 6]
>>> [j-i for i, j in zip(t[:-1], t[1:])]  # or use itertools.izip in py2k
[2, 3]

151voto

ianalis Points 1216

Les autres réponses sont correctes, mais si vous effectuez un travail numérique, vous pourriez vouloir considérer la numpy. En utilisant numpy, la réponse est :

v = numpy.diff(t)

43voto

Omer Dagan Points 889

Si vous ne souhaitez pas utiliser numpy ni zip, vous pouvez utiliser la solution suivante :

>>> t = [1, 3, 6]
>>> v = [t[i+1]-t[i] for i in range(len(t)-1)]
>>> v
[2, 3]

25voto

Xavier Guihot Points 6414

À partir de Python 3.10, avec la nouvelle fonction pairwise, il est possible de glisser à travers des paires d'éléments et ainsi mapper sur des paires de rouleaux :

from itertools import pairwise

[y-x for (x, y) in pairwise([1, 3, 6, 7])]
# [2, 3, 1]

Le résultat intermédiaire étant :

pairwise([1, 3, 6, 7])
# [(1, 3), (3, 6), (6, 7)]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X