按索引访问python列表对象

按索引访问python列表对象,python,Python,我对python列表索引有问题。 假设有一个列表,我可以通过索引访问列表中的对象。 请看以下代码: 1: x=[["python"],] 2: x[0] 3: ['python'] 4: x[0][0] 5: 'python' 6: x[0][0][0] 7: 'p' 到目前为止还可以,它们是正确的,但我无法理解这一点: 8: x[0][0][0][0] 9: 'p' 10:x[0][0][0][0][0][0][0][0] 11:'p' 事实上我不明白为什么这不是一个错误。 为什么第

我对python列表索引有问题。 假设有一个列表,我可以通过索引访问列表中的对象。 请看以下代码:

1: x=[["python"],]

2: x[0]
3: ['python']

4: x[0][0]
5: 'python'

6: x[0][0][0]
7: 'p'
到目前为止还可以,它们是正确的,但我无法理解这一点:

8: x[0][0][0][0]
9: 'p'
10:x[0][0][0][0][0][0][0][0]
11:'p'
事实上我不明白为什么这不是一个错误。 为什么第8行和第10行不是错误?

因为在python中,单个字符(此处为“p”)被视为字符串,每个字符串的0的索引是其第一个字符(例如“p”[0]=“p”)

范例

x[0][0][0][0] # "p" as a string (Given)
x[0][0][0][0][0] #"p" as a first character 
                 # of previous string as when 
                 # you write "p"[0]

"p"[0] # remember also prints "p" as it is 
       #  the first char

这是因为
x[0][0][0]
返回一个字符串,即
“p”
。所以
x[0][0][0][0]
p
,因为字符串
“p”
的第一个字符是
“p”

尝试这样做:

s = "Hi"
s[0]
s[0][0]

s[0]和s[0][0]都返回“H”

单字符是长度为1的退化字符串序列。因为它是一个序列,所以可以使用方括号表示法检索元素。因为它不是空的(is正好有一个元素),所以其中存在第0个元素并且可以检索。

什么是
'p'[0]
返回的?