作者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://webptt.com/cn.aspx?n=bbs/Python/M.1403847619.A.A9E.html
※ 编辑: ck574b027 (125.227.236.144), 06/27/2014 13:44:42
1F:→ Quietlake:谢指教 06/27 17:15
2F:→ Quietlake:速度差真多 06/27 17:16
3F:推 darkgerm:maketrans() 的时间也应该算进去,其实没差到那麽多 06/27 22:37
4F:→ darkgerm:不过还是 maketrans 快一点就是了,如果有很多字串要处理 06/27 22:38
5F:→ darkgerm:会差更多 06/27 22:38
6F:→ darkgerm:话说原PO电脑配备是啥...为啥可以这麽快 06/27 22:41
7F:→ darkgerm:join 我跑至少要 3.7 秒耶orz 06/27 22:41
8F:→ darkgerm:然後 pypy 跑竟然只要 0.77 .... 06/27 22:44
9F:→ ck574b027:对耶,我因为 table 实务上可以重复使用就直接拿来用XD 06/28 00:02
10F:→ ck574b027:I5-4440 8G 还算普通啦。 06/28 00:04
※ 编辑: ck574b027 (123.194.2.92), 06/28/2014 00:13:14