2016-08-22 64 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)]