我的输入如下:
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,repeat
为n
:
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))