Manière pythonique d'obtenir la différence maximale entre 2 éléments consécutifs d'une liste


Sam

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.

dop star
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]

Articles connexes


Python: différence maximale entre les éléments d'une liste

Lax_Sam J'ai besoin de trouver la différence maximale entre les éléments d'une liste non triée si l'élément à droite de l'élément actuel est plus grand. Par exemple: myList = [2, 3, 8, 0, 7]. La fonction doit calculer comme suit: present element = 2. is 3 >