2015-09-14 13 views

回答

3
from collections import Counter 
max(Counter(my_list).itervalues()) > N 
+0

我看到你拿了一個不同的解釋「任意數目超過N次」,所以是更有效,我沒有。儘管我認爲可以使用'any'而不是'max',所以它可以縮短''any(x> N for Counter(my_list).itervalues())' –

+0

@JohnLaRooy,我認爲它取決於'max '有更可預測的表現:更糟糕的情況下,更糟糕的最好的情況。如果沒有元素顯示N次以上,'max'會更快。而且我認爲大部分時間都會花在構建'計數器'上,所以這個差別很小。 「max」高爾夫更好,而imo的可讀性略高一些。 – Akavall

3
if your_list.count(item) > N: 
    print("it happened here") 
3

最簡單的方法可能是爲計算機

[x for x in set(the_list) if the_list.count(x) > N] 

這不是最有效的方法(O(n**2))雖然如此,另一種策略是大列表需要。

使用collections.Counter意味着計算機只需要通過瀏覽列表一次,(O(n)

from collections import Counter 
[k for k, v in Counter(the_list).items() if v > N] 
相關問題