字符串索引 - 为什么S [0] [0]有效且S [1] [1]失败?

Cod*_*sci 5 python python-2.7 python-3.x

假设我创建了一个字符串:

>>> S = "spam"
Run Code Online (Sandbox Code Playgroud)

现在我将其索引如下:

>>> S[0][0][0][0][0]
Run Code Online (Sandbox Code Playgroud)

我输出为:

>>> 's'
Run Code Online (Sandbox Code Playgroud)

但当我将其索引为:

>>> S[1][1][1][1][1]
Run Code Online (Sandbox Code Playgroud)

我输出为:

Traceback (most recent call last):
File "<pyshell#125>", line 1, in <module>
L[1][1][1][1][1]
IndexError: string index out of range
Run Code Online (Sandbox Code Playgroud)

为什么输出不是'p'

为什么它也适用于S [0] [0]S [0] [0] [0]S [0] [0] [0] [0]而不适用于S [1] [1]S [1] [1] [1]S [1] [1] [1] [1]

El'*_*man 10

答案是S[0]给你一个长度为1的字符串,因此必须在索引0处有一个字符.S[1]还会给你一个长度为1的字符串,但它必然没有索引1处的字符.见下文:

>>> S = "spam"
>>> S[0]
's'
>>> S[0][0]
's'
>>> S[1]
'p'
>>> S[1][0]
'p'
>>> S[1][1]
Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    S[1][1]
IndexError: string index out of range
Run Code Online (Sandbox Code Playgroud)


Tig*_*kT3 8

[0]任何字符串的第一个索引()是它的第一个字符.由于这会产生一个字符的字符串,因此该字符串的第一个索引是第一个字符,它本身就是一个字符.你可以[0]随心所欲地做同样的角色.

[1]但是,第二个索引()仅存在于至少包含两个字符的字符串中.如果您已将索引编入索引以生成单字符字符串,[1]则无效.

>>> a = 'abcd'
>>> a[0]
'a'
>>> a[0][0]
'a'
>>> a[1]
'b'
>>> a[1][0][0]
'b'
>>> a[1][1]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range
Run Code Online (Sandbox Code Playgroud)