我目前有这个代码,它检查数组中的所有元素是否相同.如果是这种情况,请返回true
def all_equal(lst):
"""
>>> all_equal([1,1,1,1,1,1,1])
True
>>> all_equal([1,2,3,1])
False
"""
return len(frozenset(lst)) == 1
Run Code Online (Sandbox Code Playgroud)
但我想要检查的是,是否至少有5个相同的元素.
以便
[1,1,1,1,1,2,2]
Run Code Online (Sandbox Code Playgroud)
将返回True以及.因为有5次1
from collections import Counter
def all_equal(lst, count):
return any(v >= count for v in Counter(lst).values())
Run Code Online (Sandbox Code Playgroud)
不使用套装,而是使用bag或multiset类型.多重集合计算唯一值出现的次数.
在Python中,这是collections.Counter()
对象:
from collections import Counter
def all_equal(lst):
bag = Counter(lst)
if any(v >= 5 for v in bag.itervalues()):
# an element occurred at least 5 times
# (use bag.values() if using Python 3)
return True
return False
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
187 次 |
最近记录: |