在python中枚举组合

  • 本文关键字:组合 枚举 python python
  • 更新时间 :
  • 英文 :


我的输入如下:

T A G C  
2  

我想要这样的输出。

TT
TA
TG
TC
AT
AA
AG
AC
GT
GA
GG
GC
CT
CA
CG
CC   

如果我在2的位置输入3,输出应该是这样的:

TTT
TTA
TTG
TTC
TAT
TAA
TAG
TAC
...
...
and so on....

我已经写了代码,但我不知道之后该怎么办:

data=open('D:pythoninput.txt')
a=data.read().split('n')
result=[]
symbol=a[0]
integer=a[1]
if integer==0:
   result.append(None)
for s in symbol: 

我不知道这之后该怎么办。。。。

您可以使用itertools.product,repeatn:

from itertools import product
n = 2
l = ["T","A","G","C"]
for prod in (product(l,repeat=n)): 
    print("".join(prod))
TT
TA
TG
TC
AT
AA
AG
AC
GT
GA
GG
GC
CT
CA
CG
CC

您还应该使用with打开文件,这会自动关闭文件,并使用原始字符串r作为文件路径或/'s。您需要将每一行拆分为单独的元素,然后可以使用itertools.chain.from_iterable连接所有元素并创建产品:

from itertools import product, chain
n = 3
with open(r'D:pythoninput.txt') as data:  # <- raw string "r" 
    symbols = chain.from_iterable(x.split() for x in data)
    for prod in product(symbols,repeat=n):
        print("".join(prod))
TTT
TTA
TTG
TTC
TAT
TAA
.......................

没有链和生成器表达式,我们可以使用list.extend创建所有项目的单个列表:

with open(r'D:pythoninput.txt') as data:
    symbols = []
    for line in data:
        symbols.extend(line.split())
    for prod in product(symbols, repeat=n):
        print("".join(prod))

最新更新