Re: [討論] 字母平移的程式改進

看板Python作者 (荒圍!定厝!賊!妹!)時間10年前 (2014/06/27 13:40), 10年前編輯推噓1(109)
留言10則, 3人參與, 最新討論串2/3 (看更多)
※ 引述《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

06/27 17:15, , 1F
謝指教
06/27 17:15, 1F

06/27 17:16, , 2F
速度差真多
06/27 17:16, 2F

06/27 22:37, , 3F
maketrans() 的時間也應該算進去,其實沒差到那麼多
06/27 22:37, 3F

06/27 22:38, , 4F
不過還是 maketrans 快一點就是了,如果有很多字串要處理
06/27 22:38, 4F

06/27 22:38, , 5F
會差更多
06/27 22:38, 5F

06/27 22:41, , 6F
話說原PO電腦配備是啥...為啥可以這麼快
06/27 22:41, 6F

06/27 22:41, , 7F
join 我跑至少要 3.7 秒耶orz
06/27 22:41, 7F

06/27 22:44, , 8F
然後 pypy 跑竟然只要 0.77 ....
06/27 22:44, 8F

06/28 00:02, , 9F
對耶,我因為 table 實務上可以重複使用就直接拿來用XD
06/28 00:02, 9F

06/28 00:04, , 10F
I5-4440 8G 還算普通啦。
06/28 00:04, 10F
※ 編輯: ck574b027 (123.194.2.92), 06/28/2014 00:13:14
文章代碼(AID): #1JhGF3gU (Python)
文章代碼(AID): #1JhGF3gU (Python)