作者ykjiang (York)
看板Python
标题Re: [问题] 排列组合
时间Mon Oct 27 22:41:00 2008
现在递回跟非递回版的执行速度又拉近了,执行时间几乎无差别:
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