我有三组
[1,2] [4,5] [a,b]
我想要这样的排列/组合
1 4 a
1 5 a
1 4 b
1 5 b
2 4 a
2 5 a
2 4 b
2 5 b
12 4 a
12 5 a
12 4 b
12 5 b
12 4 ab
12 5 ab
1 45 a
2 45 a
1 45 b
2 45 b
1 45 ab
2 45 ab
1 4 ab
2 5 ab
12 45 ab
这个数组可以增长,并且不会一直是相同的大小,因此排列将增加。
到目前为止我已经知道了。
from itertools import *
bag1 = [1, 2]
bag2 = [4, 5]
bag3 = ['a', 'b']
bags = []
bags.append(bag1)
bags.append(bag2)
bags.append(bag3)
comb = list(product(*bags))
最佳答案
考虑到你的代码,你需要使用笛卡尔积(积),对所有可能的组合你的开始'袋':
from itertools import product, combinations
def comb_bag( bag):
new_bag = []
for n in range( 1, 1+len(bag)):
new_bag += list( combinations(bag, n))
return new_bag
bag1 = [1, 2]
bag2 = [4, 5]
bag3 = ['a', 'b']
bags = []
new_bag1 = comb_bag( bag1)
new_bag2 = comb_bag( bag2)
new_bag3 = comb_bag( bag3)
bags.append(new_bag1)
bags.append(new_bag2)
bags.append(new_bag3)
comb = list(product(*bags))
for e in comb:
print( e)
关于python - 如何在python中动态获取组的组合/排列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53658956/