0
votes

Combiner et ajouter des listes imbriquées

En ce moment, j'ai une liste imbriquée et j'ai besoin d'une fonction pour créer une nouvelle liste qui combine l'élément 0 et l'élément 1 si elles sont identiques. S'ils sont identiques, il ajoute également les 3ème éléments ensemble.

Entrée d'échantillon: P> xxx pré>

sortie attendue: p>

output_list = [['123','6','5'], ['123','4','55']]


0 commentaires

3 Réponses :


1
votes

Pour ce problème, car l'élément à la position 0 et 1 dans la liste intérieure doit être identique pour que la troisième valeur soit ajoutée ensemble, puis indiquant le résultat, Donc, tout le nécessaire à faire était de hash les deux premières valeurs et si une répétition est à venir, ajoutez la valeur de cette paire de hachage.

dans Python dict fournir cette fonctionnalité, vous pouvez donc la mettre en œuvre de cette façon p>

[['123', '6', '5'], ['123', '4', '55']]


0 commentaires

0
votes

Vous pouvez utiliser une dict pour agréger les valeurs de la même clé et utiliser une compréhension de liste pour construire la liste de sortie souhaitée à partir de la DICT:

[['123', '6', '5'], ['123', '4', '55']]


0 commentaires

0
votes

Puisque vous avez expliqué que vous vouliez des conseils et non une réponse complète, je posterai mon commentaire précédent, plus une discussion supplémentaire.

Pour moi, une solution serait de soustraire un élément à la fois, en utilisant POP (), puis en regardant le reste de l'entrée en itérant et en vérifiant les éléments restants avec le même [0] et [1 ] articles.

S'il y a, je voudrais aussi pop () cet élément, résumer le troisième élément et compléter l'itération. Lorsqu'il est complet, l'élément résultant va à la liste de sortie.

puis répétez jusqu'à ce qu'il n'y ait plus d'éléments sur l'entrée.

L'idée derrière cet algorithme et je pense que sur l'autre réponse ici, tente d'éviter de traiter plus d'une fois le même élément. Probablement une solution qui n'utilise pas de boucles imbriquées complètes sera correcte d'un point de vue de traitement.


2 commentaires

O (n * n) c'est trop


Oui, l'idée est d'éviter o (n * n) et de garder à l'esprit que des expressions comme (i [0], i [1]) ne peuvent pas aussi impliquer des itérations en elles-mêmes. Probablement optimisé, bien sûr, mais toujours ...