python 与 字符串的全排列

  • A+
所属分类:Bioinformatics

问题的引入:

在处理DNA数据的时候,我们可能想枚举n-turple的全部可能形式。

即1-turple的时候,对应 ['A','T','C','G']

而2-turple的时候,对应['AA','AT',...] 等16种。

怎样用程序生成这些turples,哪种效率又最好,这里做个简单的探讨,具体程序如下:


from itertools import product
import time

base=list(‘ATCG’)

def sequence(n):
#x=reduce(lambda x,y:[(a+b) for a in x for b in y],map(lambda

x:[x]*n,[base])[0])
x=reduce(lambda x,y:[(a+b) for a in x for b in y],[base]*8)

def sequence2(n):
if n==1:
return base
elif n>1:
return [temp+temp2 for temp in sequence2(n-1) for temp2 in base]

start=time.time()
sequence(8)
print time.time()-start

start=time.time()
[''.join(x) for x in product(base,repeat=8)]
print time.time()-start

start=time.time()
x=sequence2(8)
print time.time()-start

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: