比较两个列表(检查长列表中出现短列表的次数)

时间:2019-02-16 21:19:11

标签: python python-2.7 list function compare

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

示例:  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除以得到数字。不幸的是,这给了我第一场比赛,我不确定如何获得所有比赛。希望你们能帮助我。

2 个答案:

答案 0 :(得分:1)

您可以通过前进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

答案 1 :(得分:0)

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

 <button type="button" class="btn btn-primary" data-igracId="@item.playerId" id="Edit" data-target="#myModalEdit" data-toggle="modal">Izmjeni</button>

输出:

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']))