我有一个包含 32 个独特元素的列表。每个元素由唯一键表示,值可以是以下 3 种类型之一:A
、B
和 C
。
elements = {1: 'A',
2: 'A',
3: 'B',
4: 'C',
...
...
32: 'B'}
类型的表示并不相同,即:类型 B
可能比类型 A
或 C
出现更多次。
我需要获得遵循这些限制的所有可能组合:
示例(简化符号):
[1A, 12A, 3B, 6B, 4C, 5C]
:包含 2xA、2xB、2xC有没有办法有效地做到这一点,使用矩阵/向量化或集合和联合/交集?
我可能可以使用 itertools.combinations(elements, r=6)
获得所有组合并稍作调整,但我不确定如何有效地执行这些规则而不必遍历所有 (906,192) 组合。