我正在做作业,但我被代码卡住了。 问题是关于两个包含字符串字母作为元素的列表,我们想知道小文本在长文本中出现多少次。(有订单)
例: long=[
'a','k','g','j','a','k','k','a','k','g']小=['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)
首先尝试在列表中写下匹配项,然后除以列表的镜头以获得数字。但不幸的是,这给了我第一场比赛,我不确定如何获得所有的比赛。希望你们能帮助我。
您可以通过前进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
将长列表切成 len(小)长的小块,每次检查相等性
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