作者ck574b027 (荒圍!定厝!賊!妹!)
看板Python
標題Re: [討論] 字母平移的程式改進
時間Fri Jun 27 13:40:06 2014
※ 引述《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