在itertools.product中重复参数

时间:2016-12-08 11:42:11

标签: python

我正在尝试制作不同的组合K和M.我使用itertools.product。但重复只取整数。我想列出不同长度的组合,包括6,7,8,9,10,11。我列出了所需的长度并在这个列表上循环,但它只给出了长度为11的所有单词组合。这里是我的代码的一些行:

wd = ['K','M']
k1 = [6,7,8,9,10,11]
for i in k1:
    motif = [''.join(p) for p in itertools.product(wd, repeat=i)]

如何更改此循环以获得所有长度的所有组合。 所以我会有一个这样的列表(当然这只是其中的一小部分)

results = ["KKKKKK", "KKKKKM", "KKKKMM", ... , "KKKKKKK", "KKKKKKM", "KKKKKMM", ........., "KKKKKKKKKKK", "KKKKKKKKKKKM", "MMMMMMMMMMM"]

1 个答案:

答案 0 :(得分:2)

问题是你在每次循环迭代时覆盖motif。你应该这样做:

wd = ['K','M']
k1 = [6,7,8,9,10,11]
motif = []
for i in k1:
    motif += [''.join(p) for p in itertools.product(wd, repeat=i)]

或者这个:

import itertools
wd = ['K','M']
k1 = [6,7,8,9,10,11]
motif = [''.join(p) for i in k1 for p in itertools.product(wd, repeat=i)]

输出:

['KKKKKK', 'KKKKKM', 'KKKKMK', ..., 'MMMMMMMMMMK', 'MMMMMMMMMMM']