python中的K个项目的L组中的N个元素的组合

问题描述

给出N个元素的列表,例如

mylist = [0,1,2,3,4,5,6,7]

我想找到L个群组中K个元素的所有组合,例如对于K=4L=2, 结果将为

          L=0            L=1 
 1)   [0,3]   [4,7]
 2)   [0,4]   [3,7]
 3)   [0,5]   [3,7]

              ... etc...
69)   [4,7]   [0,3]

请注意,[0,3][0,2]将被视为第一组的相同组合。

对于L=2,我正在使用以下

from itertools import combinations

N = 8
M = 4
L = N // M

combs = list(combinations(range(N),M))
allidx = list(range(N))

for c,comb in enumerate(combs):

    idx1 = list(comb)
    idx2 = list(set(allidx) - set(idx1))

    print(c,idx1,'\t',idx2)

首先,这种“组合”的数学定义是什么?

第二,在L>2的情况下,有一种比计算所有排列并在之后修剪它们更有效的方法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)