Anleitung
Zwei Listen in Python vergleichen
Von songshiqiang7 Min. Lesezeit
Häufige Ansätze:
- Set:
&,-,^für Schnittmenge/Differenzen (sehr schnell, aber ohne Reihenfolge/Duplikate) - List Comprehension: Ordnung/Duplikate erhalten, flexibel für Filter
- Schleifen: gut erweiterbar, dafür ausführlicher Code
collections.Counter: Häufigkeiten vergleichen
Tipp: Für reine Mitgliedschaftsprüfungen Listen in Sets umwandeln – das ist deutlich schneller.
Ausführliche Anleitung
1. set verwenden (am schnellsten und einfachsten)
Wenn nur eindeutige Werte zählen und weder Reihenfolge noch Duplikate wichtig sind.
list_a = [1, 2, 3, 4, 5]
list_b = [4, 5, 6, 7, 8]
set_a = set(list_a)
set_b = set(list_b)
common = set_a & set_b # Schnittmenge → {4, 5}
only_a = set_a - set_b # Nur in A → {1, 2, 3}
only_b = set_b - set_a # Nur in B → {6, 7, 8}
symm = set_a ^ set_b # Symm. Diff. → {1, 2, 3, 6, 7, 8}
Vorteile: sehr schnell und kurz. Nachteile: Ordnung/Duplikate gehen verloren.
2. List Comprehensions (Ordnung/Duplikate behalten)
list_a = [1, 2, 3, 4, 5, 5]
list_b = [4, 5, 6, 7, 8]
only_a = [x for x in list_a if x not in list_b] # [1, 2, 3]
common = [x for x in list_a if x in list_b] # [4, 5, 5]
Performance‑Tipp: list_b als Set vorbereiten:
set_b = set(list_b)
common = [x for x in list_a if x in set_b]
3. Schleifen (einsteigerfreundlich)
only_a = []
for x in list_a:
if x not in list_b:
only_a.append(x)
4. collections.Counter (Häufigkeiten vergleichen)
from collections import Counter
ca = Counter(['a', 'b', 'b', 'c'])
cb = Counter(['b', 'c', 'd', 'e'])
common = list((ca & cb).elements()) # ['b', 'c']
only_a = list((ca - cb).elements()) # ['a', 'b']
Zusammenfassung
| Methode | Vorteile | Nachteile | Geeignet für |
|---|---|---|---|
set |
schnell, kurz | keine Ordnung/Duplikate | Schnittmenge/Differenzen |
| List Comprehension | behält Ordnung/Duplikate | langsamer ohne Set | maßgeschneiderte Filter |
| Schleife | erweiterbar | ausführlicher | Einsteiger/komplexe Logik |
| Counter | Häufigkeiten | keine Ordnung | Frequenz‑Vergleiche |
Praxis‑Tipp: Für reine Mitgliedschaftsprüfungen immer Sets nutzen – das ist deutlich schneller.
Tags
#Python#Listenvergleich#Anleitung