反复切片

时间:2012-10-26 08:47:33

标签: python

重复切片对元组和列表很有效:

>>> tuple = ("nav", "yad")
>>> tuple[0]
'nav'
>>> tuple[0][0]
'n'

但是有字符串:

>>> name="university"
>>> name[0]
'u'

这里奇怪的是,当我尝试重复切换字符串名称变量时, name[0][0]name[0][-1]没有任何内容,为什么会显示"u"

>>> name[0][0]
'u'
>>> name[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

2 个答案:

答案 0 :(得分:12)

String是一个序列。一个字符的字符串仍然是具有一个元素的序列。因此,使用字符串,您可以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]中只有一个元素。

答案 1 :(得分:0)

添加@ Roman的答案。我认为你的印象是name[0]会返回某种char。但事实并非如此。会发生什么是name[0]返回长度为1的字符串。所以无论你用0重复索引非空字符串多少次,它总是返回相同的。