Vereinigung zweier Listen in Python

Ich habe zwei Listen, die sagen:

a = [1, 2, 2, 2, 3]

b = [2, 5, 6]

Nachdem ich ein union, ich sollte so etwas (nicht Sinn der Reihenfolge):

c = [1, 2, 2, 2, 3, 5, 6]

In der endgültigen Liste sollte enthalten gemeinsame Elemente nur einmal und der rest der Elemente (in beiden Listen) kopiert werden sollen, wie Sie sind. Sets können nicht verwendet werden, für die es, wie Sie, entfernen Sie mehrere vorkommen eines Elements aus der Liste, das ist keine union. Was ist ein Pythonic Weg, dies zu tun?

  • a+b denke ich ...
  • Was ist mit 3 in deinem Beispiel?
  • a = [1, 2, 2, 3]; b = [2, 5, 6]; a_set = set(a); c = a + [x for x in b if x not in a_set] / c => [1, 2, 2, 3, 5, 6]
  • Wenn das richtige multiset union, Sie hätte drei mal 2 in Ihrem Ausgang, und schließen Sie die 3. Ich bin wirklich nicht sicher, was Sie hier zu tun versuchen; vielleicht müssen Sie überdenken Ihre Frage. Andernfalls verwenden Sie itertools.Counter() Objekte: c = list((Counter(a) + Counter(b)).elements()) (oder bleiben einfach mal Counter() Objekte alle Weg).
  • Ich erarbeitet habe, die Frage. Ich hoffe es ist jetzt klar.
InformationsquelleAutor Rahul | 2016-04-01
Schreibe einen Kommentar