Maison >développement back-end >Tutoriel Python >Comment puis-je calculer efficacement la somme cumulée d'une liste de nombres ?

Comment puis-je calculer efficacement la somme cumulée d'une liste de nombres ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-10 22:24:12887parcourir

How Can I Efficiently Calculate the Cumulative Sum of a List of Numbers?

Calculer efficacement la somme cumulée des nombres dans une liste

En programmation informatique, il est souvent nécessaire de calculer la somme cumulée des nombres dans une liste. Il s'agit du processus d'addition de chaque numéro de la liste à la somme précédente. Par exemple, si la liste d'origine contient [4, 6, 12], la somme cumulée serait [4, 10, 22].

Une approche simple consiste à parcourir manuellement la liste et à mettre à jour la somme cumulée. en suivant les étapes suivantes :

t1 = time_interval[0]
t2 = time_interval[1] + t1
t3 = time_interval[2] + t2

Cependant, cette approche peut s'avérer inefficace, en particulier pour les grandes listes. Pour les opérations numériques complexes impliquant des tableaux, il est recommandé d'utiliser des bibliothèques telles que Numpy. Numpy fournit une fonction spécialisée appelée cumsum pour calculer la somme cumulée :

import numpy as np

a = [4, 6, 12]

np.cumsum(a)  # Output: array([4, 10, 22])

Numpy offre des avantages de performances significatifs par rapport aux implémentations Python pures, comme en témoigne le benchmark suivant :

In [136]: timeit list(accumu(range(1000)))
10000 loops, best of 3: 161 us per loop

In [137]: timeit list(accumu(xrange(1000)))
10000 loops, best of 3: 147 us per loop

In [138]: timeit np.cumsum(np.arange(1000))
100000 loops, best of 3: 10.1 us per loop

While Numpy est puissant, il peut ne pas être nécessaire si la somme cumulée est la seule opération requise. Cependant, cela vaut la peine d'y réfléchir si votre projet implique des opérations numériques étendues.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn