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

Antworten auf die Frage(12)

Ihre Antwort auf die Frage