输入:
[[1,2,3],[1,5,7],[1,9,3],[4,3,8]]
预期结果:
[1,3]
(如果元素存在于超过 50% 的输入列表中,则将元素添加到结果中)。
我正在寻找优雅的、pythonic 的解决方案:)。对不起,我的英语不好。
输入:
[[1,2,3],[1,5,7],[1,9,3],[4,3,8]]
预期结果:
[1,3]
(如果元素存在于超过 50% 的输入列表中,则将元素添加到结果中)。
我正在寻找优雅的、pythonic 的解决方案:)。对不起,我的英语不好。
怎么样:
>>> from collections import Counter
>>> s = [[1,2,3],[1,5,7],[1,9,3],[4,3,8]]
>>> count = Counter(term for subseq in s for term in set(subseq))
>>> [k for k,v in count.items() if v > len(s)//2]
[1, 3]
Counter是一个方便的工具,它可以计算事物:
>>> Counter([1,2,3,3,2])
Counter({2: 2, 3: 2, 1: 1})
[.. 哎呀,刚刚注意到您使用的是 Python 3,所以我们需要 .items()]。