作者ykjiang (York)
看板Python
标题Re: [问题] 排列组合
时间Sat Oct 25 22:40:47 2008
精益求精:
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 [decode(x,n) for x in xrange(4**n)]
※ 引述《ykjiang (York)》之铭言:
: 刚刚发现 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)]
: ※ 引述《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),
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.59.19.38
1F:推 superGA:我喜欢这个版本XD 10/26 00:48