相关疑难解决方法(0)

有效地检查元素是否在列表中至少出现n次

如何最好地编写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)

还有其他好的解决方案吗?什么是最有效的方法?

谢谢

python optimization performance list python-3.x

22
推荐指数
2
解决办法
1616
查看次数

标签 统计

list ×1

optimization ×1

performance ×1

python ×1

python-3.x ×1