Python:反转列表

时间:2013-06-08 03:39:07

标签: python arrays list reverse

好的,所以我搜索了多个主题并发现了关于撤消thisthis等列表的有用讨论。我从中获得的是使用

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 ??

1 个答案:

答案 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'