Re: [問題] 排列組合
其實遞迴版並不會比較慢,只要稍做調整:
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
: : def gen(n):
: : if n == 0:
: : return ['']
: : else:
: : return [x + y for x in ['A', 'T', 'C', 'G'] for y in gen(n - 1)]
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.70.98.179
推
10/26 14:20, , 1F
10/26 14:20, 1F
→
10/26 14:55, , 2F
10/26 14:55, 2F
→
10/26 14:58, , 3F
10/26 14:58, 3F
→
10/26 14:59, , 4F
10/26 14:59, 4F
→
10/26 15:00, , 5F
10/26 15:00, 5F
討論串 (同標題文章)
Python 近期熱門文章
PTT數位生活區 即時熱門文章