爲什麼這不正常?我知道高級切片([:: - 1])選項,但我想弄清楚如何以這種方式反轉str。用標準索引切片字符串
word = input("Please enter a word to reverse: ")
cut = len(word)
print(word[cut:-cut])
爲什麼這不正常?我知道高級切片([:: - 1])選項,但我想弄清楚如何以這種方式反轉str。用標準索引切片字符串
word = input("Please enter a word to reverse: ")
cut = len(word)
print(word[cut:-cut])
word[cut:-cut]
可以去從cut
到-cut
,你也可以寫
word[cut:0]
但一步依然是1,這是仍積極。所以它會從末尾分割,並停止,因爲它已經到了最後!
這意味着步驟是需要的任一方式,word[cut:-cut:-1]
。向後索引時,兩個索引都需要減1,因此您有word[cut-1:-cut-1:-1]
或word[cut-1:-6:-1]
,或者甚至只有word[::-1]
。請注意,-1
作爲最終參數將被重新調整回到字符串的末尾!
實際上,您必須使用'word [cut-1:-1:-1]'。 –
@Martijn,不,不起作用。在切片中,Python首先將序列的長度添加到任何負數索引。所以你的中間'-1'魔法變成了'len(word) - 1',而這個片實際上是空的!試試吧;-)這只是和'range'或者'xrange'的參數不一樣。 '[cut-1 :: - 1]'這個詞有效(省略中間的參數)。 –
@TimPeters:啊,你說的對,忘了那個角落的情況。沒有辦法指定'-1'的最終值,因爲負值超負荷。 –
除非您指定否定步驟,否則切片始終向前。在切片結束後指定開始位置只會產生一個空切片。你需要負面的一步。
''cut''表示從字符串末尾開始的'cut'步驟。 – rlms
@ user2387370請發表那個評論作爲答覆;) – tacaswell
那麼爲什麼在這種情況下沒有否定符號功能呢? – Zack