看板 [ Python ]
討論串[問題] 排列組合
共 17 篇文章

推噓1(1推 0噓 4→)留言5則,0人參與, 最新作者ykjiang (York)時間16年前 (2008/10/26 12:33), 編輯資訊
0
0
0
內容預覽:
其實遞迴版並不會比較慢,只要稍做調整:. def gen(n):. if n == 0:. return ['']. else:. return [x+y for x in gen(n-1) for y in 'ATCG']. 改變迴圈的順序,這是很基本的最佳化作法.... --. 發信站:

推噓0(0推 0噓 0→)留言0則,0人參與, 最新作者ykjiang (York)時間16年前 (2008/10/26 12:18), 編輯資訊
0
0
0
內容預覽:
tmp 可以去掉:. def gen1(n):. L = ['']. for i in range(n):. L = [j+k for j in L for k in 'ATCG']. return L. 現在行數已經跟遞迴版相當了 :). --. 發信站: 批踢踢實業坊(ptt.cc). ◆

推噓1(1推 0噓 0→)留言1則,0人參與, 最新作者mantour (朱子)時間16年前 (2008/10/26 10:36), 編輯資訊
0
0
0
內容預覽:
測n=10時. def gen1(n):. list=['']. for i in range(n):. tmp=[j+k for j in list for k in 'ATCG']. list=tmp. return list. 3.949s. 下面的版本在我的電腦上測n=10為17.545s.

推噓3(3推 0噓 5→)留言8則,0人參與, 最新作者zhouer ( )時間16年前 (2008/10/25 23:35), 編輯資訊
0
0
0
內容預覽:
我也是這麼覺得 :). 我剛測試了 n = 10 的 case. 精益求精版約 6.655s. 下面的版本約 2.621s. --. 發信站: 批踢踢實業坊(ptt.cc). ◆ From: 123.194.218.239.

推噓1(1推 0噓 0→)留言1則,0人參與, 最新作者ykjiang (York)時間16年前 (2008/10/25 22:40), 編輯資訊
0
0
0
內容預覽:
精益求精:. def mod4(x,n):. for i in xrange(n):. yield x%4. x /= 4. def decode(x,n):. return "".join(["ATCG"[x] for x in mod4(x,n)]). def gen(n):. return [