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

时间:2015-11-26 07:09:19

标签: python python-2.7 python-3.x

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

>>> S = "spam"

现在我将其编入索引如下:

>>> S[0][0][0][0][0]

我输出为:

>>> 's'

但是当我把它编入索引时:

>>> S[1][1][1][1][1]

我输出为:

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

为什么输出不是&#39; <&#39;

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分:0)

Python String将始终具有第0个Position String / 1st Character。即使我们执行[0] 100次,您也总是选择剩余字符串的第一个字符。因此....

对于数组下标以1开头的编程语言,您可以类似地为第一个字符执行此操作。