看板 Python 關於我們 聯絡資訊
※ 引述《Quietlake (ekalteiuQ)》之銘言: : 大家好,一直以來我寫程式就是想辦法得到答案,可是都不清楚如何改進, : 因為自己懂的東西總是很少,所以想到說把自己的方法po上來,來看大家 : 有沒有些不同的想法,不知道這種文是否可以po,有問題請告訴我,我會改進。 : -------------------------------------------------------------------- : 題目:將一個字串的字母上移2個 : 範例:輸入為abc時,輸出為cde : code: : temp = input("Enter a string: ") : i = len(temp) : temp = list(temp) : j = 0 : while(j<i): : temp[j] = chr(ord(temp[j]) + 2) : j += 1 : temp = ''.join(temp) : print(temp) 如果追求速度,字串處理盡量不用 join,改成 translate from timeit import timeit timeit("''.join(chr(ord(i) + 2) for i in temp)", "temp='asdfghjkl'") # 2.7016338949604233 timeit("temp.translate(maketrans(lowercase, shift))", '''from string import maketrans, lowercase shift = lowercase[2:]+lowercase[:2] temp = "asdfghjkl" ''') # 0.4455782200311802 ## 單跑 translate ## 0.11883597813539382 P.S. 新手文不是不能 PO,寫清楚需要解決什麼問題,你自己對這問題做過哪些思考和努力, 符合板規,大家都會很歡迎。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.236.144 ※ 文章網址: http://www.ptt.cc/bbs/Python/M.1403847619.A.A9E.html ※ 編輯: ck574b027 (125.227.236.144), 06/27/2014 13:44:42
Quietlake:謝指教 06/27 17:15
Quietlake:速度差真多 06/27 17:16
darkgerm:maketrans() 的時間也應該算進去,其實沒差到那麼多 06/27 22:37
darkgerm:不過還是 maketrans 快一點就是了,如果有很多字串要處理 06/27 22:38
darkgerm:會差更多 06/27 22:38
darkgerm:話說原PO電腦配備是啥...為啥可以這麼快 06/27 22:41
darkgerm:join 我跑至少要 3.7 秒耶orz 06/27 22:41
darkgerm:然後 pypy 跑竟然只要 0.77 .... 06/27 22:44
ck574b027:對耶,我因為 table 實務上可以重複使用就直接拿來用XD 06/28 00:02
ck574b027:I5-4440 8G 還算普通啦。 06/28 00:04
※ 編輯: ck574b027 (123.194.2.92), 06/28/2014 00:13:14