Как лучше написать функцию Python (check_list
) для эффективного тестирования, если элемент (x
) встречается не менее n
раз в списке (l
)?
Моя первая мысль была:
def check_list(l, x, n):
return l.count(x) >= n
Но это не короткое замыкание, когда x
было найдено n
раз и всегда O (n).
Простой подход, который делает короткое замыкание:
def check_list(l, x, n):
count = 0
for item in l:
if item == x:
count += 1
if count == n:
return True
return False
У меня также есть более компактное короткое замыкание с генератором:
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))
Есть ли другие хорошие решения? Каков наилучший эффективный подход?
Спасибо