Python 如何根据配额生成所有可能的排列?

Python 如何根据配额生成所有可能的排列?,python,combinations,permutation,itertools,Python,Combinations,Permutation,Itertools,给定两个列表X和Y: X=['A','B','C','D'] Y=['I','J','K','L','M','N'] 如何创建4个组合的所有可能集合,限制至少考虑X和Y的2个元素。例如,有效的组合如下所示: [('A', 'J', 'M', 'D'), ..., ('I', 'M', 'B', 'C')] 原因是它包含来自X和Y的两个元素。组合[('A','B','M','D')]无效,因为它包含来自X的3个元素和来自Y的1个元素。到目前为止,我尝试: import itertools set

给定两个列表
X
Y

X=['A','B','C','D']

Y=['I','J','K','L','M','N']

如何创建4个组合的所有可能集合,限制至少考虑
X
Y
的2个元素。例如,有效的组合如下所示:

[('A', 'J', 'M', 'D'), ..., ('I', 'M', 'B', 'C')]
原因是它包含来自
X
Y
的两个元素。组合
[('A','B','M','D')]
无效,因为它包含来自X的3个元素和来自Y的1个元素。到目前为止,我尝试:

import itertools
set(list(itertools.permutations([e for e in zip(X, Y)])))

但是,这违反了配额限制。实施配额排列的正确方法是什么?

您只需对每个列表中的2个进行排列并将其组合,然后对每组4个进行所有组合:

from itertools import permutations, combinations
X = ['A', 'B', 'C', 'D']
Y = ['I', 'J', 'K', 'L', 'M', 'N']

x = (n+m for n in permutations(X,2) for m in permutations(Y,2))
for i in x:
    print(list(combinations(i,4)))

您只需对每个列表中的2进行排列并组合,然后对每组4进行所有组合:

from itertools import permutations, combinations
X = ['A', 'B', 'C', 'D']
Y = ['I', 'J', 'K', 'L', 'M', 'N']

x = (n+m for n in permutations(X,2) for m in permutations(Y,2))
for i in x:
    print(list(combinations(i,4)))