看板 Python 關於我們 聯絡資訊
如題 小的剛學python沒幾天 學python的原因是要用來解online judge 剛好學到字串 有一個問題實在搞不太懂 假設s是個字串 為何s[::-1]是這個字串的反轉字串 其原理是什麼啊 ----- Sent from JPTT on my Asus ASUS_Z00UD. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 110.28.168.13 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1496291516.A.2B6.html
ides13: slice[start:end:step],頭尾空白表不指定,step是-1。 06/01 12:42
ides13: s[::-1]表示從尾巴執行到開始,每步驟是向後1步。 06/01 12:44
ides13: http://tinyurl.com/ln38jue 06/01 12:49
Yshuan: 因為python貼心的會將負數N的index提取 當作倒數第N個的 06/01 14:35
Yshuan: 我s[::-1] 我是想像成 for (i=0;abs(i)<len(s);--i) 在跑 06/01 14:36
vi000246: 我也很討厭python的slice語法 都要死背 06/01 16:37
ides13: 在start和end的負號是指倒數第幾個。在step負號指反向。 06/01 17:17
LessonWang: 感謝各位的解釋 我已經了解了 有了slice蠻方便的 06/01 17:48
os653: 不用slice語法的話,程式會多很多行,讀起來也不直覺 06/01 20:35
真的 而且字串要反轉 一般都使用迴圈來解決 用slice一行搞定 不知道python的內部演算法是否比迴圈還快呢 ※ 編輯: LessonWang (110.28.168.13), 06/01/2017 22:40:33
uranusjr: 反轉字串 str(reversed(s)) 一行不就搞定了嗎 06/02 11:32
況且線上評測系統online judge會限制使用特定的函數 剛好slice不是函數 蠻方便的 其實用slice也是一行搞定xdd ※ 編輯: LessonWang (110.28.168.13), 06/02/2017 13:05:25 ※ 編輯: LessonWang (110.28.168.13), 06/02/2017 13:06:52
vi000246: 刷leetcode還是不要用現成的函數 手動刻一個吧 06/02 16:01
你說的是 可是有執行時間限制的話 我還是傾向於使用原生的slice來反轉字串 畢竟原生的內部函式演算法 應該是比我們手刻的還快吧(? ※ 編輯: LessonWang (110.28.168.13), 06/02/2017 19:35:21
jrshiang0423: 不一定比手刻快,除非寫的很糟糕 06/11 04:29