HOWTO · Python
Elemente in List Python zählen
Dieses Tutorial zeigt, wie Elemente in einer Liste in Python gezählt werden
Auf dieser Seite
„Elemente in einer Liste zählen“ kann drei verschiedene Aufgaben bedeuten, und Python bietet für jede davon ein direktes Werkzeug. Verwenden Sie len(), wenn Sie die Gesamtzahl der Elemente benötigen, list.count(), wenn Sie die Vorkommen eines einzelnen Werts zählen möchten, und Counter aus dem Modul collections, wenn Sie auf einmal eine Häufigkeit für jeden Wert brauchen. Eine manuelle Schleife mit einem Dictionary erzeugt dasselbe Häufigkeitsergebnis und zeigt genau, wie das Zählen funktioniert. Dieses Tutorial führt Sie mit ausführbaren Beispielen durch jede Methode, damit Sie den Ansatz wählen können, der zu Ihrer Aufgabe passt.
Die Gesamtzahl der Elemente mit len() ermitteln
Die integrierte Funktion len() gibt die Anzahl der Elemente auf der obersten Ebene einer Liste zurück. Sie funktioniert mit beliebigen Elementtypen — Zahlen, Strings, booleschen Werten oder sogar anderen Listen — weil sie die Liste selbst misst, nicht die darin enthaltenen Werte.
Führen Sie dieses Beispiel aus:
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
items = [10, "apple", 3.14, [1, 2, 3]]
print(len(items))
4
Die Liste enthält vier Elemente: eine Ganzzahl, einen String, eine Gleitkommazahl und eine verschachtelte Liste. len() meldet 4, weil die verschachtelte Liste [1, 2, 3] auf der äußeren Ebene als ein einziges Element zählt. Wenn Sie Elemente einbeziehen müssen, die in verschachtelten Listen gespeichert sind, flachen Sie die Struktur zuerst ab oder summieren Sie die Längen der inneren Listen separat — len() schaut nie über die oberste Ebene hinaus.
Vorkommen eines einzelnen Werts mit list.count() zählen
Die Methode list.count() gibt zurück, wie oft ein bestimmter Wert in der Liste vorkommt. Übergeben Sie den gesuchten Wert, und sie durchsucht die Liste für Sie:
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
my_list = [1, 2, 3, 2, 1, 4, 2]
print(my_list.count(2))
print(my_list.count(9))
3
0
Der Wert 2 kommt dreimal vor, während 9 nie vorkommt; der zweite Aufruf gibt daher 0 zurück. list.count() funktioniert mit jedem Elementtyp, den die Liste enthalten kann, einschließlich Strings und gemischter Daten.
Beachten Sie zwei Einschränkungen. Jeder Aufruf beantwortet eine Frage zu einem einzelnen Wert; das Zählen von drei verschiedenen Werten erfordert also drei separate Aufrufe — für eine vollständige Häufigkeitsverteilung verwenden Sie stattdessen Counter oder eine Schleife. Und bei einer verschachtelten Liste vergleicht list.count() nur ganze Elemente, die dem übergebenen Wert entsprechen; ein Wert, der in einer verschachtelten Liste gespeichert ist, wird nicht erkannt, es sei denn, Sie flachen die Liste zuerst ab.
Jeden Wert mit Counter zählen
Die Klasse Counter aus dem Modul collections erstellt in einem Durchlauf eine Häufigkeitszuordnung für jeden Wert. Sie verhält sich wie ein Dictionary, das jedes Element seiner Anzahl zuordnet:
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
from collections import Counter
my_list = [1, 2, 3, 2, 1, 4, 2]
element_count = Counter(my_list)
print(element_count)
print(element_count[2])
print(element_count[9])
Counter({2: 3, 1: 2, 3: 1, 4: 1})
3
0
Die Indizierung eines Counter funktioniert wie bei einem Dictionary, mit einem nützlichen Unterschied: Das Lesen eines Schlüssels, der nie gezählt wurde, gibt 0 zurück, statt einen Fehler auszulösen, sodass element_count[9] sicher 0 ausgibt.
Da jeder Wert intern zu einem Dictionary-Schlüssel wird, muss jedes Element hashbar sein. Ganzzahlen, Strings und Tupel erfüllen diese Bedingung; eine verschachtelte Liste nicht. Für Listen mit nicht hashbaren Elementen wandeln Sie die Elemente zuerst in eine hashbare Form um oder zählen Sie sie mit einem anderen Ansatz.
Ein Häufigkeits-Dictionary mit einer Schleife erstellen
Eine einfache Schleife mit einem Dictionary erzeugt dieselben Häufigkeiten und macht die Mechanik sichtbar. Initialisieren Sie ein Dictionary und erhöhen Sie dann beim Durchlaufen der Liste die Zählung für jedes Element:
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
my_list = [1, 2, 3, 2, 1, 4, 2]
element_count = {}
for element in my_list:
if element in element_count:
element_count[element] += 1
else:
element_count[element] = 1
print(element_count)
{1: 2, 2: 3, 3: 1, 4: 1}
Das Ergebnis ordnet jeden Wert seiner Anzahl zu: 2 kommt dreimal vor, 1 kommt zweimal vor, und 3 und 4 kommen jeweils einmal vor. Dieses Muster benötigt nur einen einzigen Durchlauf durch die Liste und gibt Ihnen volle Kontrolle — Sie können jedes Element vor dem Zählen umwandeln, ausgewählte Werte überspringen oder etwas anderes als eine einfache Anzahl akkumulieren. Dieselbe Hashbarkeits-Einschränkung gilt: Jedes Element wird zu einem Dictionary-Schlüssel, daher müssen nicht hashbare Elemente wie verschachtelte Listen zuerst umgewandelt oder abgeflacht werden.
Um zwischen diesen Werkzeugen zu wählen, passen Sie die Methode an die Frage an. Greifen Sie zu len() für die Gesamtzahl der Elemente, zu list.count() für einen einzelnen Wert und zu Counter oder einer Dictionary-Schleife für eine vollständige Häufigkeitszuordnung.