Python 生成所有固定长度的排列,其中元素来自两个不同的集合

Python 生成所有固定长度的排列,其中元素来自两个不同的集合,python,python-3.x,itertools,Python,Python 3.x,Itertools,pythonitertools中是否有任何函数需要生成满足特定条件的所有数字排列 (a、b、c、d) a和d:来自set1={1,2,3} b和c:来自集合2,其中集合2的元素数为196 置换需要替换 所以a和b应该只取集合1中的值,b和c应该只取集合2中的值。如何生成具有上述限制的所有置换 我知道如何使用itertools生成置换序列来生成置换。但是我在从两组中提取项目时遇到了问题如果我正确解释了您的文本,以下代码应该就是您要查找的代码: import itertools set1 = [

python
itertools
中是否有任何函数需要生成满足特定条件的所有数字排列

(a、b、c、d)

  • a和d:来自
    set1={1,2,3}
  • b和c:来自集合2,其中集合2的元素数为196
  • 置换需要替换
所以a和b应该只取集合1中的值,b和c应该只取集合2中的值。如何生成具有上述限制的所有置换


我知道如何使用
itertools
生成置换序列来生成置换。但是我在从两组中提取项目时遇到了问题

如果我正确解释了您的文本,以下代码应该就是您要查找的代码:

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])

但我不知道这些是如何排列的…所以…你需要为这两个集合生成排列并计算笛卡尔积?(并稍微整理一下结果)您的问题不太清楚^^什么是
ie | set 2 |是196
?@spectras-该产品确实有效,谢谢。正如@spectras所建议的,另一种方法是使用该产品三次,然后对条目重新排序。但这一个也很有效。