您可以
itertools.groupby()在
any()
*中使用和生成器表达式:
>>> from itertools import groupby>>> any(sum(1 for _ in g) > 1 for _, g in groupby(lst))True
或者,您可以使用
zip(),以一种更Python化的方式来检查列表中是否至少有两个相等的连续项:
>>> any(i==j for i,j in zip(lst, lst[1:])) # In python-2.x,in order to avoid creating a 'list' of all pairs instead of an iterator use itertools.izip()True
注意:如果要检查是否有两个以上的连续相等项目,则第一种方法是好的,否则,在这种情况下,第二种方法会很容易做到!
*在内存使用方面,使用
sum(1 for _ in g)而不是进行了
len(list(g))非常优化(不立即读取内存中的整个列表),但是后者要快一些。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)