[英]Python: Reversing lists [duplicate]
这个问题已经在这里有了答案:
好的,所以我搜索了多个线程,并遇到了有关诸如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认为它是len(S)-1吗? 哦,天哪。.那么使S [::-1]之间起作用的'IS'是什么呢? 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?
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'
现在,如果字符串包含六个以上的字符:
>>> 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'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.