Maison > développement back-end > Tutoriel Python > Comment puis-je effectuer efficacement l'ajout de listes par éléments en Python ?

Comment puis-je effectuer efficacement l'ajout de listes par éléments en Python ?

Linda Hamilton
Libérer: 2024-12-05 06:58:14
original
851 Les gens l'ont consulté

How Can I Efficiently Perform Element-Wise Addition of Lists in Python?

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]
Copier après la connexion

Le résultat souhaité est :

[1, 2, 3]
+  +  +
[4, 5, 6]
|| || ||
[5, 7, 9]
Copier après la connexion

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))
Copier après la connexion

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)]
Copier après la connexion

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
Copier après la connexion

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!

Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal