python中用于组合的枚举

2024-04-25 09:23:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我的意见是这样的:

T A G C  
2  

我想要这样的输出。你知道吗

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

如果我在输入中用3代替2,那么输出应该是这样的:

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

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

data=open('D:\python\input.txt')
a=data.read().split('\n')
result=[]
symbol=a[0]
integer=a[1]

if integer==0:
   result.append(None)
for s in symbol: 

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


Tags: gtdatatgintegerresultsymbolacat
1条回答
网友
1楼 · 发布于 2024-04-25 09:23:13

您可以使用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:\python\input.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:\python\input.txt') as data:
    symbols = []
    for line in data:
        symbols.extend(line.split())
    for prod in product(symbols, repeat=n):
        print("".join(prod))

相关问题 更多 >