在列表过滤器[]

时间:2015-06-06 11:41:20

标签: python

以下代码不起作用

s = [x for x in s if s.count(x) > k]

其中s是我的列表,而k是一些自然数,但如果我将4代替k则可行。是否有可能在那里找出变量k

1 个答案:

答案 0 :(得分:1)

你的代码应该可以工作但效率非常低,每次执行一次.count会给你二次复杂性,创建一个Counter dict并进行查找会给你一个线性解决方案:

from collections import Counter

cn = Counter(s)
print([x for x in s if cn[x] > k])