2016-08-22 63 views
2

這是我在教學生時發現的一個奇怪的Python。使用負指數在Python中訪問整個字符串

如果否定索引應該正確工作,那麼對於字符串m ='string',我執行了以下步驟。

>>> m='string' 
>>> m[:-1] 
'strin' 
>>> m[:0] 
'' 
>>> m[-1] 
'g' 
>>> m[0:] 
'string' 
>>> m[:-1] 
'strin' 
>>> m[:0] 
'' 
>>> 

我想知道如何使用負索引訪問整個字符串?

+3

你不能。除非'm [-0:]'或'm [-len(m):]'重要。 –

+3

但是爲什麼?這不是什麼負面指數。 – DeepSpace

+0

'm [:: - 1]'總是一個有趣的演示。問一個問題,「爲什麼列表有一個'reverse()'方法,但是一個字符串沒有?列表上的這個切片和'reverse()'有什麼區別? – cdarke

回答

7
>>> m='string' 
>>> m[-len(m):] 
'string' 

就像正指數從一個字符串的開頭向前計數一樣,負指數從最後開始計數。因此,我們必須計算回len(m)以回到m的開始。

+0

'n = m [-len(m):]'然後做:'n是m'。 – cdarke

0

我猜你實際上並不是指任何人所建議的答案。你想知道究竟是爲什麼m[:-N]返回所有字符除了最後ñ除非N是零,因爲-0等於0,m[:0]應該,當然,返回一個空字符串。

不幸的是,這是一種語言不可逾越的怪癖。

作爲警務人員,我會提供:m[:None]m[:(None if N==0 else -N)]