Re: [問題] 排列組合
好玩的是,非遞迴版調換迴圈順序後也變快幾近一倍:
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']
: 改變迴圈的順序,這是很基本的最佳化作法...
: ※ 引述《mantour (朱子)》之銘言:
: : 測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
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.70.98.179
推
10/27 02:04, , 1F
10/27 02:04, 1F
→
10/27 12:22, , 2F
10/27 12:22, 2F
→
10/27 12:24, , 3F
10/27 12:24, 3F
→
10/27 22:27, , 4F
10/27 22:27, 4F
→
10/27 22:28, , 5F
10/27 22:28, 5F
討論串 (同標題文章)
Python 近期熱門文章
PTT數位生活區 即時熱門文章