Manière pythonique d'obtenir la différence maximale entre 2 éléments consécutifs d'une liste
J'ai une liste qui stocke les scores d'un jeu qui se joue en tours. À chaque index, le score est stocké de telle sorte qu'il soit égal au score total obtenu jusqu'à ce tour inclus.
- tour 1 - 5 points sont marqués dans ce tour
- tour 2 - 3 points sont marqués dans ce tour
- tour 3 - 7 points sont marqués dans ce tour
- tour 4 - 4 points sont marqués dans ce tour
Cela se traduira par
total_score = [5, 8, 15, 19]
Comment puis-je convertir cela proprement en une liste qui a le score de chaque tour à chaque indice, au lieu du score total jusqu'à ce tour.
Je veux donc transformer la liste ci-dessus en :
round_scores = [5, 3, 7, 4]
Ce n'est pas particulièrement difficile à faire simplement en l'itérant et en soustrayant le score de l'index précédent du score de l'index actuel. Mais y a-t-il une manière plus propre de faire ceci ? Peut-être une compréhension de liste d'une doublure ? Je suis assez nouveau sur Python, mais j'ai vu de la magie se faire en une seule ligne dans d'autres réponses.
x = [5, 8, 15, 19] # total scores
y = [x[i] - x[i-1] if i else x[i] for i in range(len(x))] # round scores
print(y)
# output
[5, 3, 7, 4]