【问题标题】:Comparing two lists (check how many times short list occurs in long list) [duplicate]比较两个列表(检查短列表在长列表中出现的次数)[重复]
【发布时间】:2019-07-10 16:25:07
【问题描述】:

我正在做作业,但我的代码卡住了。 问题是关于两个列表,其中包含字符串字母作为元素,我们想知道小文本在长文本中出现了多少次。(有顺序)

示例: long=['a','k','g','j','a','k','k','a','k','g']

small=['a','k','g']

那么答案应该是 2,因为它出现了两次(第一部分和最后一部分) 正如我所尝试的:

def search(long,small):
    words=[]
    for k in range(len(long)):
         for l in range(len(small)):
               if long[k]==small[l]:
                   words.append()
               return(words)

首先尝试写下列表中的匹配项,然后除以列表的 len 以获得数字。但不幸的是,这给了我第一场比赛,我不知道如何获得所有比赛。希望大家能帮帮我。

【问题讨论】:

    标签: python python-2.7 list function compare


    【解决方案1】:

    将长列表切成 len(small) long 并每次检查是否相等

    def search(long, small):
        return sum(long[i:i+len(small)]==small for i in range(len(long)-len(small)+1))
    
    print(search(['a','k','g','j','a','k','k','a','k','g'], ['a','k','g']))
    

    输出:

    2
    

    【讨论】:

      【解决方案2】:

      您可以通过small 的元素前进并在遇到“奇数”元素时重置计数器来做到这一点:

      def search(long,small):
        indexCt = 0
        count = 0
        for k in range(len(long)):
            if long[k]==small[indexCt]:
              indexCt += 1
            else:
              indexCt = 0
            if(indexCt == len(small)):
              indexCt = 0
              count += 1
      
        return count
      

      【讨论】:

        猜你喜欢
        • 2014-07-07
        • 1970-01-01
        • 2018-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-19
        相关资源
        最近更新 更多