Ajout de listes par éléments : efficacité pythonique
Lors de la manipulation de listes, il est souvent nécessaire d'effectuer des opérations par éléments. Considérons la tâche consistant à ajouter des éléments de deux listes de manière positionnelle, comme indiqué ci-dessous :
list1 = [1, 2, 3] list2 = [4, 5, 6]
Le résultat souhaité est :
[1, 2, 3] + + + [4, 5, 6] || || || [5, 7, 9]
Pour réaliser cet ajout par élément, plusieurs approches pythoniques existent :
Méthode 1 : Operator.add et map
Le module Operator.add fournit les fonctionnalités nécessaires pour l’ajout par élément. En utilisant la fonction map, vous pouvez parcourir les deux listes simultanément et appliquer l'opération d'ajout :
from operator import add result = list(map(add, list1, list2))
Méthode 2 : zip et compréhension de liste
La fonction zip combine des éléments de listes en tuples, qui peuvent être davantage manipulés dans la compréhension d'une liste. Cette approche consiste à extraire des valeurs des tuples et à les additionner :
result = [sum(x) for x in zip(list1, list2)]
Considérations relatives aux performances
Le choix de la méthode peut dépendre des exigences de performances. Les comparaisons temporelles suivantes indiquent que l’approche map(add, list1, list2) est la plus rapide pour les grandes listes. Les méthodes basées sur zip sont plus lentes en raison de la manipulation supplémentaire des tuples.
Par exemple, avec des listes contenant 100 000 éléments chacune :
%timeit from operator import add;map(add, list1, list2) 10 loops, best of 3: 44.6 ms per loop %timeit from itertools import izip; [a + b for a, b in izip(list1, list2)] 10 loops, best of 3: 71 ms per loop %timeit [a + b for a, b in zip(list1, list2)] 10 loops, best of 3: 112 ms per loop
Pour des opérations plus complexes, des méthodes supplémentaires peuvent être nécessaires. Cependant, pour la simple tâche d'addition élément par élément, les approches décrites ci-dessus fournissent les solutions les plus pythoniques et les plus efficaces.
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!