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 die3
. Ich bin wirklich nicht sicher, was Sie hier zu tun versuchen; vielleicht müssen Sie überdenken Ihre Frage. Andernfalls verwenden Sieitertools.Counter()
Objekte:c = list((Counter(a) + Counter(b)).elements())
(oder bleiben einfach malCounter()
Objekte alle Weg). - Ich erarbeitet habe, die Frage. Ich hoffe es ist jetzt klar.
InformationsquelleAutor Rahul | 2016-04-01
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Führen Sie eine union, halten Wiederholung:
Führen Sie eine union, halten Wiederholung & Bestellung:
Führen Sie eine union, keine Wiederholung in jeder Liste, aber die Wiederholung darf im Finale union und aufbewahrt wird, um:
Nach Klärung der Frage, das Ziel ist der Aufbau einer Liste, die Elemente, die (einschließlich der Wiederholung), und fügen Sie dann Elemente von b, wenn Sie nicht in der neuen Liste.
Nach dem anderen die Klärung der Frage, das Ziel ist, erstellen Sie eine Liste mit allen Elementen der input-Liste. Aber, wenn Elemente gemeinsam, Sie sind geschoben, die gleiche Anzahl gibt es
3
verschwindet), aber ich habe den Befehl für genau das bekommen, was gefragt ist.2
in c)put on hold
Flagge... sollten Sie überlegen, absolut klar nächsten mal, wenn Sie eine Frage stellen, indem Sie weitere Beispiele, ohne Fehler)2
im[1,2,2,4]
, so dass es enthalten ist zweimal, nicht einmal. Ich habe bearbeitet die Frage.Counter
implementiert union und intersection Operationen:list((na | nb).elements())
. Zusätzlich in deinem letzten Beispiel die Ausgabe vonmerge
sollte[1, 2, 2, 3, 4]
.