J'ai deux listes que je dois combiner où la deuxième liste a tous les doublons de la première liste ignorés. .. Un peu difficile à expliquer, alors laissez-moi vous montrer un exemple de ce à quoi ressemble le code et ce que je veux en conséquence.
first_list = [1, 2, 2, 5]
second_list = [2, 5, 7, 9]
# The result of combining the two lists should result in this list:
resulting_list = [1, 2, 2, 5, 7, 9]
Vous remarquerez que le résultat a la première liste, y compris ses deux valeurs "2", mais le fait que second_list a également une valeur supplémentaire de 2 et 5 n'est pas ajouté à la première liste.
Normalement, pour quelque chose comme ça, j'utiliserais des ensembles, mais un ensemble sur first_list purgerait les valeurs en double qu'il a déjà. Je me demande donc simplement quel est le moyen le meilleur / le plus rapide pour réaliser cette combinaison souhaitée.
Merci.
second_list
?Réponses:
Vous devez ajouter à la première liste les éléments de la deuxième liste qui ne figurent pas dans la première - les ensembles sont le moyen le plus simple de déterminer de quels éléments ils sont, comme ceci:
Ou si vous préférez les one-liners 8-)
la source
2
dans votre résultat, alors qu'il devrait y en avoir deux.la source
set
. 👍Vous pouvez utiliser des ensembles:
la source
Vous pouvez ramener cela à une seule ligne de code si vous utilisez numpy:
la source
la source
la source
Le plus simple pour moi est:
la source
TypeError: unhashable type: 'dict'
)Vous pouvez également combiner les réponses de Ned et de RichieHindle Batchelder pour une moyenne cas O (m + n) algorithme qui préserve l' ordre:
Notez que la
x in s
complexité dans le pire des cas est O (m) , donc la complexité dans le pire des cas de ce code est toujours O (m * n) .la source
Cela pourrait aider
La fonction union fusionne la deuxième liste dans la première, sans dupliquer un élément de a, s'il est déjà dans a. Similaire à l'opérateur set union. Cette fonction ne change pas b. Si a = [1,2,3] b = [2,3,4]. Après l'union (a, b) fait a = [1,2,3,4] et b = [2,3,4]
la source
Basé sur la recette :
la source
[1, 2, 2, 5, 7, 9]
la source