为什么count()方法给出奇怪的答案?

时间:2019-04-17 05:52:07

标签: python-3.x

s = "ANANAS"
print(s.count("ANA"))
print(s.count("AN"))
print(s.count("A"))

“ ANA”在“ ANANAS”中出现两次,但python打印1,而 “ AN”出现两次,python打印2。“ A”出现三次,python打印3作为输出。为什么会有这种奇怪的行为?

2 个答案:

答案 0 :(得分:1)

直接从documentation

  

str.count sub [,开始[,结束]]
  返回 不重叠 的数量   子字符串sub的出现范围是[start,end]。可选的   参数start和end被解释为切片符号。

“ ANANAS”中“ ANA”的两次出现是重叠的,因此s.count("ANA")仅返回1。

答案 1 :(得分:1)

这是因为,在子字符串ANA中,如果它像“ testANAANAAN”那样只被计数两次,即两次完整出现的ANA。 同样,在您的情况下,如果它已经检查了第一个完整的子字符串,它将不再使用完整字符串中的该字符串部分,而是在其余字符串中寻找匹配的子字符串。