我正在尝试制作不同的组合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"]
答案 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']