python itertools
中是否有任何函数需要生成满足特定条件的所有数字排列。
(A,B,C,d)
set 1 = {1,2,3}
set 2
,其中元素集2的数量为196。所以a和b应该只取第1组中的值而b和c应该仅取第2组的值。如何生成具有上述限制的所有permutaitons
我知道如何使用itertools
生成置换以生成具有置换的导数。但是,从两套物品中取出物品时我遇到了问题
答案 0 :(得分:1)
如果我正确地解释了你的文字,下面的代码应该是你要找的:
import itertools
set1 = [1,2,3]
set2 = [4,5]
for i in itertools.permutations(set1, 2):
for j in itertools.permutations(set2, 2):
print("({},{},{},{})".format(i[0], j[0], j[1], i[1]))
打印
(1,4,5,2)
(1,5,4,2)
(1,4,5,3)
(1,5,4,3)
(2,4,5,1)
(2,5,4,1)
(2,4,5,3)
(2,5,4,3)
(3,4,5,1)
(3,5,4,1)
(3,4,5,2)
(3,5,4,2)
正如@spectras所说,产品更优雅:
p1 = itertools.permutations(set1, 2)
p2 = itertools.permutations(set2, 2)
for i in itertools.product(p1, p2):
print(i[0][0], i[1][0], i[1][1], i[0][1])