我想生成一个组合列表.我会尽量简化我的问题,使之易于理解.
我们有3个变量:
- x:字母数
- k:组数
- n:每组的字母数
我想使用python生成一个包含所有可能组合的列表,而不需要任何重复:我不关心组的顺序以及组中字母的顺序.
例如,x=4,k=2,n=2:
# we start with 4 letters, we want to make 2 groups of 2 letters
letters = ['A','B','C','D']
# here would be a code that generate the list
# Here is the result that is very simple, only 3 combinations exist.
combos = [ ['AB', 'CD'], ['AC', 'BD'], ['AD', 'BC'] ]
因为我不关心组的顺序,也不关心组内的字母,所以['AB', 'CD']
和['DC', 'BA']
是重复的.
这是我真正问题的简化,它有以下值:x = 12
k = 4
n = 3
.我试着使用itertools
中的一些函数,但由于字母太多,我的电脑死机了,因为组合太多了.
另一种看待问题的方式是:你有12名球员,你想组成4支由3名球员组成的球队.所有的可能性是什么?
有人能帮我找到一个优化的解决方案来生成这个列表吗?