【发布时间】:2015-09-06 00:50:46
【问题描述】:
>>> '12345'.count('')
6
为什么会这样?如果该字符串中只有 5 个字符,为什么 count 函数又返回一个?
另外,有没有更有效的方法来计算字符串中的字符数?
【问题讨论】:
-
想想栅栏柱和栅栏板。每个面板上都有一个字符。每个帖子都没有字符。
-
简单的无法读取the documentation。不知道为什么有这么多的赞成票。 -1
-
@LightnessRacesinOrbit:文档与实现不同步。根据文档
Return the number of non-overlapping occurrences of substring sub in the range [start, end].,结果应该是 4。 -
@Abhijit 您在哪里看到实现和文档之间的区别?在我看来,这句话清楚地说明了为什么结果是 6。由于“开始”和“结束”是 inclusive,因此它们前面(和后面)的空字符串也很重要。
-
@Abhijit:
start和end采用默认值(实际上是None,但在逻辑上等价于0和len('12345'))。因此,在[start, end]范围内,空子字符串有 6 次“出现”,特别是[0:0]、[1:1]、...[5:5]。如果指定的范围是[start, end),不包括一个端点,那么我们就不会有[5:5],如果范围是(start, end),不包括两个端点,那么我们也不会有[0:0],在这种情况下4会是对的。但是如果定义排除了端点,那么'abc'.count('abc')将是 0,这将是相当令人惊讶的 ;-)
标签: python python-3.x count