[問題] 字串切割問題

看板Python作者 (橘白Cat)時間8年前 (2017/06/01 12:31), 8年前編輯推噓6(606)
留言12則, 7人參與, 最新討論串1/1
如題 小的剛學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

06/01 12:42, , 1F
slice[start:end:step],頭尾空白表不指定,step是-1。
06/01 12:42, 1F

06/01 12:44, , 2F
s[::-1]表示從尾巴執行到開始,每步驟是向後1步。
06/01 12:44, 2F

06/01 12:49, , 3F

06/01 14:35, , 4F
因為python貼心的會將負數N的index提取 當作倒數第N個的
06/01 14:35, 4F

06/01 14:36, , 5F
我s[::-1] 我是想像成 for (i=0;abs(i)<len(s);--i) 在跑
06/01 14:36, 5F

06/01 16:37, , 6F
我也很討厭python的slice語法 都要死背
06/01 16:37, 6F

06/01 17:17, , 7F
在start和end的負號是指倒數第幾個。在step負號指反向。
06/01 17:17, 7F

06/01 17:48, , 8F
感謝各位的解釋 我已經了解了 有了slice蠻方便的
06/01 17:48, 8F

06/01 20:35, , 9F
不用slice語法的話,程式會多很多行,讀起來也不直覺
06/01 20:35, 9F
真的 而且字串要反轉 一般都使用迴圈來解決 用slice一行搞定 不知道python的內部演算法是否比迴圈還快呢 ※ 編輯: LessonWang (110.28.168.13), 06/01/2017 22:40:33

06/02 11:32, , 10F
反轉字串 str(reversed(s)) 一行不就搞定了嗎
06/02 11:32, 10F
況且線上評測系統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

06/02 16:01, , 11F
刷leetcode還是不要用現成的函數 手動刻一個吧
06/02 16:01, 11F
你說的是 可是有執行時間限制的話 我還是傾向於使用原生的slice來反轉字串 畢竟原生的內部函式演算法 應該是比我們手刻的還快吧(? ※ 編輯: LessonWang (110.28.168.13), 06/02/2017 19:35:21

06/11 04:29, , 12F
不一定比手刻快,除非寫的很糟糕
06/11 04:29, 12F
文章代碼(AID): #1PBvYyAs (Python)