传递空字符串时计数如何工作?[复制]

How does count work when passing an empty string? [duplicate]

提问人:Isra 提问时间:8/11/2020 更新时间:8/11/2020 访问量:1037

问:

我有一个问题,如果我有的话

h = "hello world"
print (h.count(''))

打印 12。

但是如果我这样做

print (h[11]) 

我收到 IndexError: string index out of range

我不明白原因。

传递空字符串时,count 函数会计算什么?

评论

2赞 jasonharper 8/11/2020
空字符串存在于字符串的两端,以及其中的每对字符之间:因此结果是字符串长度加 1。

答:

0赞 Alexander 8/11/2020 #1

字符串最多只能索引 10。请记住,索引从零开始Hello World

H 第一个字符为 0 末尾的 d 是 10

当您这样做时,它会在 String 之后和之前包含一个空格,因此它会添加两个额外的增量。count('')

因此,您可以执行 or () 来显示字符串索引的最后一个元素。len(h)-1h.count('')-2

注意:len() 显示列表中有多少个元素,而不是最后一个元素的索引。字符串或列表的最后一个元素是len()-1

0赞 cs1349459 8/11/2020 #2

它打印 12 的原因是每个字母之间和两边都有空字符串。下图如下:

  All empty strings!
^h^e^l^l^o^ ^w^o^r^l^d^

看起来很奇怪,但每个都是一个空的 sn 空字符串,如果你数一数,有 12 个。^

出现错误的原因是字符串只是一个字符数组,因此它是零索引的,这意味着第一个元素是索引 0,第二个元素是索引 1,依此类推。下图如下:

-------------------------------------
a | b | c | d | e | f | g | h | i | j
-------------------------------------
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
-------------------------------------

如您所见,第 10 个元素 () 位于索引 9 处,因此尝试获取索引 10 将导致错误。j