我需要生成所有可能的长度在5至15之间的核苷酸组合的列表。

nucleotides = ['A', 'T', 'G', 'C']

预期成绩:
AAAAA
AAAAT
AAAAC
AAAAG
AAATA
AAATT
...
AAAAAAAAAAAAAAA
AAAAAAAAAAAAAAT
etc.

我试过了:
for i in range(5,16):
    for j in itertools.permutations(nucleotides, i):
        print j

但这如果len(nucleotides) < i不起作用。

提前致谢!

最佳答案

如果要查找所有组合,则应使用 .product() ,因为 .permutations() 不会产生像AAAAAAATGC这样的重复核苷酸。试试这个:

for i in range(5, 16):
    combinations = itertools.product(*itertools.repeat(nucleotides, i))
    for j in combinations:
        print(j)

更新:如@JaredGoguen所述,repeat参数也可以在这里使用:
combinations = itertools.product(nucleotides, repeat=i)

关于python - 生成范围(i,j)之间的核苷酸k-mers的所有组合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36052202/

10-12 02:11