好的,所以我搜索了多个主题并发现了关于撤消this和this等列表的有用讨论。我从中获得的是使用
S = ("hello")
print(S[::-1])
或
S = ("hello")
print(S[len(S):-len(S)-1:-1])
但我没有得到这背后的逻辑!假设我想使用
S = ("hello")
print(S[len(S):0:-1])
我会得到'olle'而不是'olleh',因为0或'h'是'end'而python在那里停止;所以我的直觉是超过0,即-1,所以它将停在-1并包括0:
S = ("hello")
print(S[len(S):-1:-1])
但突然python没有返回任何东西?!是因为python认为它是len(S)-1?哦,我的上帝..那么S [:: - 1之间的'是'是什么让它起作用? S [len(S): - len(S)-1:-1]如何有意义? -5-1?等于-6 ......所以
S = ("hello")
S[6:-6:-1]
有效...所以这意味着python将包括6,5,4,3,2,1,0,-1, - , - 3,-4,-5 ??
答案 0 :(得分:0)
s[start: stop : step]
当步骤值为负数时:
这里6和-6实际上都不在
s
的索引之内,因为s
只有5 性格长。因此,start
值被选为min(6,len(s)-1)
这种情况下,stop
值(-6)也是索引之外的所以它可以 完全跳过,python使用None
作为它的值。
>>> s = "HELLO"
>>> s[6:-6:-1]
'OLLEH'
>>> s[ min(6,len(s)-1) : -6 :-1]
'OLLEH'
>>> s[ min(6,len(s)-1) : None :-1] #None also works fine
'OLLEH'
>>> s[6:-6:-1]
'OLLEH'
现在,如果字符串超过6个字符:
>>> s = "HELLO, World"
#now you can't set the stop value as `None` as -6 is a valid index for this string.
>>> s[ min(9,len(s)-1) : -6 :-1]
'roW'
>>> s[ min(9,len(s)-1) : None :-1] #can't use None this time
'roW ,OLLEH'
>>> s[9:-6:-1]
'roW'