※ 引述《ykjiang (York)》之銘言:
: 不用遞迴可以活得更好,尤其在 n 太大(e.g. > 6)的情況:
: def decode(x,n):
: s = ""
: base="ATCG"
: for i in xrange(n):
: s += base[x%4]
: x /= 4
: return s
: def gen(n):
: for x in xrange(4**n):
: print decode(x,n),
: ※ 引述《zhouer ( )》之銘言:
: : 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: 61.59.19.38
剛剛發現 print 太頻繁,拖慢了整個速度,修改如下:
def decode(x,n):
s = []
base="ATCG"
for i in xrange(n):
s += base[x%4]
x /= 4
return "".join(s)
def gen(n):
return [decode(x,n) for x in xrange(4**n)]