0

わかりましたので、複数のスレッドを検索したところ、 thisthisなどのリストの反転に関する有益な議論に出くわしました。私がそれらから得たものは、使用することです

S = ("hello")
print(S[::-1])

また

S = ("hello")
print(S[len(S):-len(S)-1:-1])

しかし、私はこれの背後にある論理を理解していません! 使いたいとしましょう

S = ("hello")
print(S[len(S):0:-1])

0 または 'h' は 'end' であり、python はそこで停止するため、'olleh' ではなく 'olle' を取得します。したがって、私の直感では、-1 である 0 を過ぎて、-1 で停止し、0 も含めます。

S = ("hello")
print(S[len(S):-1:-1])

しかし、突然 python が何も返さない?! 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?? が含まれます

4

1 に答える 1

0
s[start: stop : step]

ステップ値が負の場合:

ここで 6 と -6 の両方が実際には のインデックスから外れておりs、長さsはわずか 5 文字です。したがって、この場合のようにstart値が選択され、値 (-6) もインデックス外であるため、完全にスキップでき、python はその値として使用されます。min(6,len(s)-1)stopNone

>>> 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'
于 2013-06-08T04:20:24.267 に答える