我有 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'])
我目前不确定顺序对我来说是否重要,但如果代码很容易解释排列,那就太好了。谢谢!
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