Sac*_*ori 2 python string iteration sequence python-3.x
我正在尝试计算序列在给定字符串中出现的次数。
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"))
Run Code Online (Sandbox Code Playgroud)
但这仅运行一次并且不循环,我如何循环并计算出现的次数,因为我知道循环将针对每个字符而不是 seq,这让我感到困惑。
好吧,因为您使用if, 而不是在循环中,这意味着要么条件为True,因此您增加count,要么False在这种情况下您不执行主体。
如果你想计算数字,你将需要一些“循环”机制。这不必是明确的,例如也in隐藏了一个循环。但这只会导致Trueor False。
count_seqence('aaaa', 'aa')是2)对于非重叠计数,我们可以使用str.count:
def count_seqence(text, seq):
return text.count(seq)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,定义特定功能当然是无用的。请注意,以上只会计算非重叠匹配项。例如,当您计算时'aa','aaaa'您将得到2,而不是3。
count_seqence('aaaa', 'aa')是3)对于重叠,我们需要执行 a 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
Run Code Online (Sandbox Code Playgroud)
因此idx,我们有一个存储新匹配出现的索引的 ,并且每次idx大于或等于0(我们找到匹配)时,我们增加cnt,并更改idx为下一个匹配。