2012-10-26 53 views
8

重複切片適用於元組和列表就好:切片串反覆

>>> 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 
+0

重複切片不是列表的功能。嘗試'[1,2,3] [0] [0]'。 –

+0

因爲索引(實際上並不是從我收集的示例中切片)字符串,您會得到字符串 - 字符是python中的一個長度爲1的字符串。類型不會更改。不是元組/列表的情況。 – gorlum0

回答

12

字符串是一個序列。一個字符的字符串仍然是一個元素的序列。所以用一個字符串,你可以做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]的元素。

0

添加到@ Roman的回答。我認爲你的印象是name[0]會返回某種char。但事實並非如此。 name[0]會返回一個長度爲1的字符串。所以無論你多次用0重複索引一個非空字符串,它總是返回相同的結果。