Effizient prüfen, ob ein Element in einer Liste mindestens n-mal vorkommt
Wie schreibe ich am besten eine Python-Funktion check_list
) um effizient zu testen, ob ein Element x
) tritt mindestens aufn
mal in einer Liste l
)?
ein erster Gedanke war:
def check_list(l, x, n):
return l.count(x) >= n
Aber dies schließt nicht einmal kurzx
wurde gefundenn
mal und ist immer O (n).
Ein einfacher Ansatz, der einen Kurzschluss verursacht, wäre:
def check_list(l, x, n):
count = 0
for item in l:
if item == x:
count += 1
if count == n:
return True
return False
Ich habe auch eine kompaktere Kurzschlusslösung mit einem Generator:
def check_list(l, x, n):
gen = (1 for item in l if item == x)
return all(next(gen,0) for i in range(n))
Gibt es noch andere gute Lösungen? Was ist der effizienteste Ansatz?
Vielen Dan