从多个列表生成子集N的组合

问题描述 投票:0回答:1

我有 4 个元素列表,并尝试从这些列表中生成元素组合。具体来说,我希望每个组合都包含每个列表中的 1 个元素。但是,我只希望每个组合包含 3 个元素。我还想记录一下哪些元素被遗漏了。

示例列表:

list1 = ['a', 'b', 'c']
list2 = ['m', 'n', 'o']
list3 = ['x', 'y', 'z']
list4 = ['q', 'r', 's']

示例仅需要 2 行输出,但我想要所有组合:

combos = [[['a', 'm', 'x'], 'q'], 
          [['a', 'n', 'r'], 'z']]
    
df = pd.DataFrame(combos, columns = ['combo', 'extra'])

我目前不确定顺序对我来说是否重要,但如果代码很容易解释排列,那就太好了。谢谢!

python combinations permutation
1个回答
0
投票

您可能想要

itertools.product

ls = [list1, list2, list3, list4]

for *a, b in product(*ls):
    print(a, b)

['a', 'm', 'x'] q
['a', 'm', 'x'] r
['a', 'm', 'x'] s
['a', 'm', 'y'] q
['a', 'm', 'y'] r
© www.soinside.com 2019 - 2024. All rights reserved.