为什么"www".count("ww")返回1而不是2?

cja*_*gir 40 python string count

在我的代码中:

>> s = 'abacaba'
>> s.count('aba')
>> 2
Run Code Online (Sandbox Code Playgroud)

对于上面的代码,我得到正确答案,因为'aba'在字符串中出现2次s.

但对于以下情况:

>> s = 'www'
>> s.count('ww')
>> 1
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我期待s.count('ww')将返回2.但它回来了1.

为什么?

Mar*_*oun 165

阅读文档:

返回string中substring sub 的(非重叠)出现次数s[start:end].开始和结束的默认值以及负值的解释与切片的默认值相同.

由于"ww"首先匹配,它从第三个"w"开始并且不匹配"ww".

  • 请注意,这个答案是指不推荐使用的`string.count()`函数,而不是等效的[`str.count()`方法](https://docs.python.org/2/library/stdtypes.html#str .计数). (2认同)

mut*_*lis 34

string.count(s, sub[, start[, end]]):

返回字符串s [start:end]中substring sub 的(非重叠)出现次数.开始和结束的默认值以及负值的解释与切片的默认值相同.

来源:https://docs.python.org/2/library/string.html

  • 请注意,这个答案是指不推荐使用的`string.count()`函数,而不是等效的[`str.count()`方法](https://docs.python.org/2/library/stdtypes.html#str .计数). (3认同)

小智 9

试着想一想:

在这个词中:"abacaba",你看到多少不重叠的 "aba"字样?我看到2.而且我也看到了"c".

在这个词中:"www" 你看到多少不重叠的 "ww"字?我看到1.而且我也看到了"w".

为了更好的解释,请考虑在您看到时删除实例.

对于"abacaba",您会看到"aba"并将其删除.现在有"caba",你再次看到"aba"并将其删除.现在你只得到"c".你看两次"aba".对于"www"也是一样,你看一次"ww"并删除它.现在你只看到"w".你曾经见过"ww"一次.

这说得通.

  • 直觉是实际阅读文档的不良替代品 (39认同)
  • 这也是不准确的; "你看到多少"ww"字?" - 我实际看到2和3"w".您可以更好,更准确地重申它. (4认同)
  • @cenkebret我建议你编辑你的答案并澄清一下.你非常感谢你的直觉,让它继续下去! (3认同)