检查列表中有多少相同的字符行操作

我有一个python列表,


l=[0,1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 ] 

例如,我想检查列表是否包含至少7个彼此相邻。1's


我不知道如何检查这个。


澄清:


a=[0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 ] #should return True   

b=[0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0 ] #should return False 

有什么想法吗?


哈士奇WWW
浏览 91回答 4
4回答

炎炎设计

一个非常简单的方法是将列表连接成一个字符串,并检查是否存在,如下所示:1...l_true = [0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 ] #should return Truel_false = [0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0 ] #should return Falsecheck = lambda x: '1'*7 in ''.join(str(num) for num in x)print(check(l_true))>>> Trueprint(check(l_false))>>> False

大话西游666

您可以检查 7 个元素的任何子列表是否与 7 个元素的列表(共 1 个元素)匹配:def f(l):    pat = [1] * 7    for i in range(len(l)-7):        if l[i: i+7] == pat:             return True    return False 在以下单行代码中具有相同的想法:[1] * 7 in (l[i:i+7] for i in range(len(l) - 7))

弑天下

就是这么简单:alist = [0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0]def is_sequence_exist(alist, count, item):    _count = 0    for elem in alist:        if elem == item:            _count += 1            if _count == count:                return True        else:            _count = 0    return Falseprint(is_sequence_exist(alist, 2, 1))

POPMUISE

这是使用 的一种方法。itertools.groupby前任:from itertools import groupbydata = [[0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0], [0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0]]for i in data:    if any((k==1 and len(list(v)) >=7) for k, v in groupby(i) ):        print("Ok", i)  
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python