我试图计算一个序列出现在给定字符串中的次数。
def count_seqence(str, seq):
count = 0
if seq in str:
count += 1
return count
print(count_seqence("the quick brown fox jumps over the lazy dog","he"))
但这只能运行一次且不会循环,我如何循环并计算出现的次数,因为我知道循环将针对每个字符而不是一个序列,这使我感到困惑。
答案 0 :(得分:4)
好吧,因为您使用if
而不是循环使用,这意味着条件是True
,因此您增加了count
,或者是{{1} },那么您就不会执行主体。
如果要计算数字,则需要某种“循环”机制。这不必是明确的,例如False
也会隐藏循环。但这只会导致in
或True
。
False
是count_seqence('aaaa', 'aa')
)对于不重叠的计数,我们可以使用2
:
str.count
在这种情况下,定义特定功能当然是毫无用处的。请注意,以上内容仅统计不重叠匹配项。例如,当您在def count_seqence(text, seq):
return text.count(seq)
中计算'aa'
时,您将得到'aaaa'
,而不是2
。
3
是count_seqence('aaaa', 'aa')
)对于重叠,我们将需要执行3
,并更新“搜索窗口”,直到不再找到匹配项为止,例如:
str.find
因此,我们有一个def count_seqence(text, seq):
cnt = 0
idx = text.find(seq)
while idx >= 0:
cnt += 1
idx = text.find(seq, idx+1)
return cnt
,用于存储发生新匹配的索引,并且每次idx
大于或等于idx
(我们找到一个匹配项)时,我们都会递增0
,然后将cnt
更改为 next 匹配项。
答案 1 :(得分:3)
在字符串上使用count
,它将返回找到参数值seq
的时间
def count_seqence(str, seq):
return str.count(seq)
print count_seqence("kjdsflsdnf lskmfldsknffsdlkfnsldkmf", "ds")
输出
2
答案 2 :(得分:2)
答案 3 :(得分:0)
在字符串上使用count,它将返回找到参数值seq的时间
def count_seqence(str,seq): 返回str.count(seq)
print count_seqence(“ kjdsflsdnf