You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求解释Python统计子串‘Emma’出现次数的第二种实现逻辑

理解统计"Emma"出现次数的手动循环解法

你已经懂了用str.count()的简单方法,下面把第二种手动循环解法的核心逻辑拆解开讲:

核心循环代码拆解

关键就是这段循环:

for i in range(len(statement) - 1):
    count += statement[i: i + 4] == 'Emma'

1. 循环的索引范围

len(statement)是输入字符串的总长度,这里循环范围写len(statement)-1,本质是遍历字符串里每个可能的起始位置。不过更精准的范围应该是len(statement)-3——因为"Emma"是4个字符,起始索引i最大只能到总长度-4,再往后的话,切片出来的子串长度不够4,肯定不等于"Emma",原代码的范围虽然多跑了几次循环,但不影响结果。

2. 切片与匹配判断

statement[i:i+4]是Python的字符串切片语法:从索引i开始,取到i+3的字符(切片是左闭右开,所以i+4是结束位置但不包含),刚好是4个字符,和"Emma"长度一致。
这个切片和"Emma"比较的结果是布尔值:匹配成功就是True,失败就是False。

3. 计数的小技巧

Python里布尔值可以直接当整数用:True等于1,False等于0。所以每次循环,匹配成功count就加1,失败就加0,刚好累计出"Emma"的出现次数。

举个实际例子:当i=0时,切片取到第一个"Emma",比较结果是True,count从0变成1;当循环到第二个"Emma"的起始索引时,同样加1,其他位置都是加0,最后返回的count就是总次数。

可选优化

把循环范围改成range(len(statement)-3),这样就不会做多余的循环,代码更高效:

for i in range(len(statement) - 3):
    count += statement[i: i + 4] == 'Emma'

内容的提问来源于stack exchange,提问作者Crack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 02:42:48