Re: [問題] 排列組合

看板Python作者 (York)時間16年前 (2008/10/27 22:41), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串14/17 (看更多)
現在遞迴跟非遞迴版的執行速度又拉近了,執行時間幾乎無差別: def gen0_2(n): I = list('ATCG') if n == 0: return [''] else: return [x+y for x in gen0_2(n-1) for y in I] def gen1_3(n): L = [''] I = list('ATCG') for i in xrange(n): L = [j+k for j in L for k in I] return L ※ 引述《ykjiang (York)》之銘言: : 好玩的是,非遞迴版調換迴圈順序後也變快幾近一倍: : def gen1_2(n): : L = [''] : for i in xrange(n): : L = [j+k for j in 'ATCG' for k in L] : return L : 所以現在非遞迴版比遞迴版快一倍 :) : ※ 引述《ykjiang (York)》之銘言: : : 其實遞迴版並不會比較慢,只要稍做調整: : : def gen(n): : : if n == 0: : : return [''] : : else: : : return [x+y for x in gen(n-1) for y in 'ATCG'] : : 改變迴圈的順序,這是很基本的最佳化作法... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.59.10.102
文章代碼(AID): #191TB_OR (Python)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 14 之 17 篇):
文章代碼(AID): #191TB_OR (Python)