为什么'12345'.count('')返回6而不是5?

Mac*_*ndo 34 python count python-3.x

>>> '12345'.count('')
6
Run Code Online (Sandbox Code Playgroud)

为什么会这样?如果该字符串中只有5个字符,为什么count函数会再返回一个?

另外,有没有更有效的方法来计算字符串中的字符?

Bil*_*ard 109

count返回一个对象在列表中出现的次数,因此如果计算出现的次数为''6,因为空字符串位于开头,结尾和每个字母之间.

使用该len函数查找字符串的长度.

  • 为什么在字母之间有一个''',而不是五个或根本没有? (3认同)
  • "一个对象出现在列表中的次数"是一个模糊的概念:如果我将空列表连接100次,我会把`count(s,'')`变为100吗?此外,"发生"可能导致人们认为`s [i]`对某些`i`是`对象` - 令人困惑的成员资格和子列表.也许说'count(s,z)`返回索引数'0 <= i <= len(s)`这样`s [i:]`以`z`开头就不那么模棱两可了. (2认同)

ζ--*_*ζ-- 28

那是因为有六个不同的子串是空字符串:在1之前,在数字之间,在5之后.

如果你想计算字符数使用len:

>>> len("12345")
5
Run Code Online (Sandbox Code Playgroud)


Mal*_*sen 25

如果你剪了五次弦,你会得到多少件?

---|---|---|---|---|---     -> 6 pieces
Run Code Online (Sandbox Code Playgroud)

同样的事情发生在这里.它5也会计算空字符串.

len('12345') 是你应该使用的.


Tho*_*ski 6

最常见的方式是使用len('12345').它返回给定字符串中的字符数 - 在本例中为5.