【发布时间】:2020-02-05 20:17:00
【问题描述】:
虽然我不想反转完整的字符串,但我正在反转 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 开始反向?当w='a'为什么标记WHAT - (5)的行在我从-1索引开始时显示'a'以及标记WHAT - (6)、WHAT - (7)和WHAT - (8)的行发生了什么?
【问题讨论】:
-
暂时忘记倒车。试试这个:
'a'[-1:-1]。或者见鬼,甚至是'a'[0:0]。
标签: python string slice reverse