Python 反复切割字符串

Python 反复切割字符串,python,Python,重复切片对元组和列表的效果很好: >>> tuple = ("nav", "yad") >>> tuple[0] 'nav' >>> tuple[0][0] 'n' 但有条件: >>> name="university" >>> name[0] 'u' 奇怪的是,当我尝试在字符串名变量上重复切片时, 在名称[0][0]或名称[0][1]中没有任何内容,为什么它会显示“u” 如果某个东西位于name[0]

重复切片对元组和列表的效果很好:

>>> tuple = ("nav", "yad")
>>> tuple[0]
'nav'
>>> tuple[0][0]
'n'
但有条件:

>>> name="university"
>>> name[0]
'u'
奇怪的是,当我尝试在字符串名变量上重复切片时, 在
名称[0][0]
名称[0][1]
中没有任何内容,为什么它会显示
“u”

如果某个东西位于
name[0][0]
,那么为什么不在其他索引上呢

>>> name[0][1]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range
>名称[0][1]
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
索引器错误:字符串索引超出范围

字符串是一个序列。一个字符的字符串仍然是一个包含一个元素的序列。因此,使用字符串可以执行
name[0][0][0][0]…
,这样就可以了。与返回序列最后一个元素的索引
-1
相同:

>>> name[0][0]
'u'
>>> name[0][0][-1]
'u'
>>> name[0][0][-1][-1]
'u'

name[0][1]
显然失败了,因为字符串
name[0]
中只有一个元素要添加到@Roman的答案中。我想您的印象是,
name[0]
将返回某种类型的
char
。但事实并非如此。发生的情况是
name[0]
返回长度为
1
的字符串。因此,无论您用0重复索引一个非空字符串多少次,它都会返回相同的结果。

重复切片不是列表的功能。尝试
[1,2,3][0][0]
。因为当索引(实际上不是从我收集的示例中切片)字符串时,您会得到字符串-在python中,字符是长度为1的字符串。类型不变。元组/列表的情况并非如此。
>>> name[0][0]
'u'
>>> name[0][0][-1]
'u'
>>> name[0][0][-1][-1]
'u'