Python 长度为1的反向字符串有些奇怪

Python 长度为1的反向字符串有些奇怪,python,string,slice,reverse,Python,String,Slice,Reverse,我正在用python反转一个字符串,尽管我不想反转整个字符串。我正在使用str[:-1]反转字符串,但不包括最后一个字符 例如:string='0123456789'要反转为string='987654321' 但是,当字符串长度为1时,反转会出现问题 我只是简单地使用了string=string[len(string)-2::-1]。它适用于长度大于1的字符串。但当字符串长度为1时,python会显示一些奇怪的结果 w='0123456789' >>> w[l

我正在用python反转一个字符串,尽管我不想反转整个字符串。我正在使用
str[:-1]
反转字符串,但不包括最后一个字符

例如:
string='0123456789'
要反转为
string='987654321'

但是,当字符串长度为1时,反转会出现问题

我只是简单地使用了
string=string[len(string)-2::-1]
。它适用于长度大于1的字符串。但当字符串长度为1时,python会显示一些奇怪的结果

    w='0123456789'
    >>> w[len(w)-2::-1]
    =>'876543210'           #PERFECT
    >>> w[len(w)-2:0:-1]
    =>'87654321'            #PERFECT
    >>> w[len(w)-2:-1:-1]
    =>''                    #WHAT? - (1)
    >>> w[len(w)-2:-2:-1]
    =>''                    #WHAT? - (2)
    >>> w[len(w)-2:-3:-1] 
    =>'8'                   #WHAT? - (3)
    >>> w[len(w)-2:-4:-1]
    =>'87'                  #WHAT? - (4)
    #now see what happens when length of w is 1
    >>> w='a'
    >>> w[len(w)-2::-1]
    =>'a'                    #WHAT - (5) as len(w)-2 is -1 
    >>> w[len(w)-2:0:-1]
    =>''                     #PERFECT
    >>> w[len(w)-2:-1:-1]
    =>''                     #PERFECT as it's [-1:-1:-1]
    >>> w[len(w)-2:-2:-1]
    =>'a'                    #WHAT - (6)
    >>> w[len(w)-2:-3:-1]
    =>'a'                    #WHAT - (7)
    >>> w[len(w)-2:-4:-1]
    =>'a'                    #WHAT - (8)

w='0123456789'
为什么标记为
WHAT-(1)
WHAT-(2)
的行没有显示任何内容,而标记为
WHAT-(3)
WHAT-(4)
的行从8开始以相反方向显示?当我从-1索引开始时,
w='a'
为什么标记为
WHAT-(5)
显示
'a'
以及标记为
WHAT-(6)
WHAT-(7)
WHAT-(8)
的行发生了什么情况
w='0123456789'

索引可以读为“从何处(包含)”:“到何处(独占)”:“步长”。前两部分中的负元素表示
+len(…)
,因此类似
w[len(w)-2:-1:-1]
的内容相当于
w[-2:-1:-1]
w[-2:len(w)-1:-1]

给定
len(w)==10
w[len(w)-2:-1:-1]
表示
w[8:9:-1]
。这显然是空的,因为你不能从8到9倒转

w[-2:-2:-1]
为空的原因与此相同(例如,
w[2:2]

w[len(w)-2:-3:-1]
w[8:7:-1]
,正如预期的那样,它只是一个字符,
'8'
w[len(w)-2:-4:-1]
映射到
w[8:6:-1]
的类似推理

w='a'

要解释
w[len(w)-2::-1]
,您还需要一条信息:空的开始或停止索引表示“适当方向的限制,包括步长符号”。因此,步骤为
-1
的缺失停止索引意味着“超过序列的开始”。另外,请记住,在这种情况下,
len(w)-2
-1
。因此您有
w[-1::-1]
,这意味着从最后一个元素向后走到开始,即
'a'

w[len(w)-2:-2:-1]
如果您也跟踪索引,则非常简单:
w[-1:-2:-1]
与长度为1时的
1[-1:-1]

较大的负停止指数应该很简单。字符串开头没有元素,因此结果总是
'a'


如果您的开始索引是
len(w)-3
左右,您会看到更多的预期结果,因为在这种情况下
len(w)
只是混淆了问题。

暂时不要考虑反转。试试这个:
'a'[-1:-1]
。或者,甚至是
'a'[0:0]
。我不明白这一行(如果我错了,请纠正我)>我签入了IDE,两者都不相同-w[-2:-1]给出一个空字符串,而w[-1:-2:-1]给出了单长度数组中唯一的字符。或者如果你想说些别的话,请澄清。谢谢你的帮助@佩拉。谢谢你的帮助。修正了打字错误。哦!我现在明白了。谢谢@佩拉。“-1”表示最后一个元素,“-2”表示倒数第二个元素,以此类推。因此
-1:-2:-1
实际上表示从最后一个元素开始,并经过字符串的开头(如果字符串只有一个元素)<代码>-1::-1
的意思是一样的。@Pera。我知道你的问题已经结束了,但是你仍然可以选择这个答案,假设它对你有意义。恭喜你获得了投票权。