为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

哈士奇WWW 2022-08-02 17:08:17
我有一个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 有什么想法吗?
查看完整描述

4 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

一个非常简单的方法是将列表连接成一个字符串,并检查是否存在,如下所示:1...


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

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



check = lambda x: '1'*7 in ''.join(str(num) for num in x)


print(check(l_true))

>>> True

print(check(l_false))

>>> False


查看完整回答
反对 回复 2022-08-02
?
大话西游666

TA贡献1817条经验 获得超14个赞

您可以检查 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))


查看完整回答
反对 回复 2022-08-02
?
弑天下

TA贡献1818条经验 获得超8个赞

就是这么简单:


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 False



print(is_sequence_exist(alist, 2, 1))


查看完整回答
反对 回复 2022-08-02
?
POPMUISE

TA贡献1765条经验 获得超5个赞

这是使用 的一种方法。itertools.groupby


前任:


from itertools import groupby


data = [[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)  


查看完整回答
反对 回复 2022-08-02
  • 4 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信