wie kann ich in python ausgeben wie oft ein wert in einer liste ist?

4 Antworten

Es gibt da eine count-Funktion.

liste.count(i)

...zählt, wie oft i in der Liste liste vorkommt.

============

So eine Funktion kann man natürlich auch selbst nochmal schreiben. Aber wozu?

Beispielsweise...

def zaehle(liste, i):
    n = 0
    for k in liste:
        if k == i:
            n += 1
    return(n)

Die Funktion zähle(liste, i) zählt, wie oft i in liste vorkommt.

Oder beispielsweise auch...

def zaehle(liste, i):
    return(sum([1 for k in liste if k == i]))

Wenn du alle Elemente durchgehen möchtest und zählen möchtest, wie oft diese in der Liste vorkommen, könnte man das beispielsweise so machen...

def zaehleAlle(liste):
    counter = dict()
    for k in liste:
        counter.update({k: counter.get(k, 0) + 1})
    return(counter)

Die anderen Antworten hauen mich etwas um. Ich glaube, in kaum einer anderen Programmiersprache fürchten sich die Programmierer so sehr davor, die Standardbibliothek zu nutzen, als bei Python.

Stattdessen wird ständig das Rad neu (und falsch bzw. ineffizient) zu erfunden.

Aber egal, deine Lösung sieht so, und nicht anders, aus:

from collections import Counter

values = [1, 2, 3, 4, 4]
stats = Counter(values)

print(dict(stats))

for value, count in stats.most_common():
    print(value, ' => ', count)

Das gibt dir die Statistiken einmal als Dictionary, und einmal in sortierter Reihenfolge aus:

{1: 1, 2: 1, 3: 1, 4: 2}
4  =>  2
1  =>  1
2  =>  1
3  =>  1

Auch wenn es anfangs etwas länger dauert, üerfliege wenigstens mal die gesamte (!) Dokumentation zur Standardbibliothek von Python!

Dann hast du nämlich im Hinterkopf "was es so alles gibt", und musst nur kurz danach suchen, anstatt auf schlechte Frickellösungen von GF zurück zu greifen. :)

Woher ich das weiß:Berufserfahrung
liste = [1, 2, 3, 4, 4]
zähler = {}
for element in liste:
    if element not in zähler.keys(): zähler[element] = 1
    else: zähler[element] += 1
for element in zähler.keys():
    print("{0}: {1}".format(element, zähler[element]))
KarlRanseierIII  03.04.2020, 20:24
if element not in zähler:
for element in zähler:

Keep it pythonic ;-).

Auch möglich:

for item in zähler.items():
1

count(i)

GuteLeonFrage 
Fragesteller
 03.04.2020, 19:46

danke, ich suche aber einen selbst geschriebenen algo

0
StefflSobi  03.04.2020, 19:49
@GuteLeonFrage

dann erstelle am anfang eine leere variable zB:
first (für alle einser) = 0
...

if list[i] == 1:
first += 1

0