Python meilleur moyen d'itérer une liste pour la modifier
En python il n'existe qu'une seule méthode pour itérer une liste et obtenir chacun de ses éléments (
for in),
mais pour pouvoir modifier chaque élément d'une liste il faut ruser et
il existe de nombreuses méthodes pour le faire. En bas se trouve un
tableau récapitulatif des performances des différentes méthodes
choisies. On voit que les générateurs tels que
range et
enumerate sont (presque) toujours plus rapides qu'un compteur fait main avec une variable incrémentée.
Une
strucure spéciale a été mise en place dans python pour les générateurs
qui ne s'applique pas avec les compteurs incrémentés, car ceux ci sont
réévalués à chaque boucle.
Attention : seules les unités des colonnes sont équivalentes.
nom de la fonction |
1 |
10 |
100 |
1000 |
10000 |
range |
1.7 |
4.5 |
2.8 |
2.63 |
2.6 |
range + len sauvegardé |
1.6 |
4.1 |
2.7 |
2.60 |
2.6 |
enumerate |
5.3 |
8 |
3.0 |
3.0 |
2.6 |
compteur inverse |
1.5 |
5.0 |
3.8 |
3.7 |
3.9 |
compteur |
1.4 |
5.8 |
4.7 |
4.7 |
4.8 |
Donc : Il vaut mieux utiliser le générateur range ou bien enumerate.