count()方法如何工作?[重复]


问题内容

这个问题已经在这里有了答案

为什么str.count(’‘)和len(str)给出不同的输出? (3个答案)

为什么是str.count(’‘)≠(来自str.count(’A’)+ str.count(’B’)+…+
str.count(’Z’))
(2个答案)

2年前关闭。

我知道str.count(sub)返回子字符串sub的出现次数。但是我遇到了一个我无法理解的奇怪问题。
我的代码如下:

str = 'helloworld'
print(str.count(''))
>>>11

输出令人困惑。为什么返回11?如果''表示任何字母,为什么不返回其长度(10)?我还没有找到任何答案。有人能告诉我实施情况吗?


问题答案:

''并不表示 任何 字符串,而是表示 没有
字符串(也就是空字符串或长度为0的字符串)。严格来说,一个字符串中有无数个长度为0的字符串,但实际上len(string) + 1会返回-
一个用于第一个字符的前面,一个用于每个字符的后面。

此场景在count.h以下情况中已明确地特殊情况:

if (sub_len == 0)
    return (str_len < maxcount) ? str_len + 1 : maxcount;

当搜索字符串为空字符串时,len(string) + 1默认情况下返回。