Ich habe zwei Listen, die ich kombinieren muss, wobei in der zweiten Liste Duplikate der ersten Liste ignoriert werden. .. Ein bisschen schwer zu erklären, also lassen Sie mich ein Beispiel zeigen, wie der Code aussieht und was ich als Ergebnis möchte.
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]
Sie werden feststellen, dass das Ergebnis die erste Liste enthält, einschließlich der beiden "2" -Werte, aber die Tatsache, dass second_list auch einen zusätzlichen Wert von 2 und 5 enthält, wird der ersten Liste nicht hinzugefügt.
Normalerweise würde ich für so etwas Sets verwenden, aber ein Set auf first_list würde die doppelten Werte löschen, die es bereits hat. Ich frage mich also nur, was der beste / schnellste Weg ist, um diese gewünschte Kombination zu erreichen.
Vielen Dank.
second_list
?Antworten:
Sie müssen an die erste Liste die Elemente der zweiten Liste anhängen, die nicht in der ersten Liste enthalten sind. Sätze sind die einfachste Methode, um festzustellen, um welche Elemente es sich handelt:
Oder wenn Sie Einzeiler bevorzugen 8-)
quelle
2
in Ihrem Ergebnis, wenn es zwei davon geben sollte.quelle
set
. 👍Sie können Sets verwenden:
quelle
Sie können dies auf eine einzige Codezeile reduzieren, wenn Sie numpy verwenden:
quelle
quelle
quelle
Am einfachsten für mich ist:
quelle
TypeError: unhashable type: 'dict'
)Sie können auch die Antworten von RichieHindle und Ned Batchelder für einen O (m + n) -Algorithmus im Durchschnittsfall kombinieren, der die Reihenfolge beibehält :
Beachten Sie, dass O (m)
x in s
eine Worst-Case-Komplexität aufweist , sodass die Worst-Case- Komplexität dieses Codes immer noch O (m * n) ist .quelle
Dies könnte helfen
Die Vereinigungsfunktion führt die zweite Liste in die erste ein, ohne ein Element von a zu duplizieren, wenn es bereits in a enthalten ist. Ähnlich wie beim Setzen des Gewerkschaftsoperators. Diese Funktion ändert sich nicht. B. Wenn a = [1,2,3] b = [2,3,4]. Nach der Vereinigung (a, b) ergibt sich a = [1,2,3,4] und b = [2,3,4]
quelle
Basierend auf dem Rezept :
quelle
[1, 2, 2, 5, 7, 9]
quelle