如何最好地编写Python函数(check_list)来有效地测试一个element(x)是否至少出现在nlist(l)中?
我的第一个想法是:
def check_list(l, x, n):
return l.count(x) >= n
Run Code Online (Sandbox Code Playgroud)
但是一旦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
Run Code Online (Sandbox Code Playgroud)
我还有一个更紧凑的带发电机的短路解决方案:
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))
Run Code Online (Sandbox Code Playgroud)
还有其他好的解决方案吗?什么是最有效的方法?
谢谢