我需要一个 of 函数,它可以将一个序列分成对,然后将它们组合起来,使组合中的所有元素都是唯一的。我已经尝试了许多使用 python 的 itertools 的方法,但还没有找到解决方案。
为了说明我想要一个可以采用这个序列的函数: [1, 2, 3, 4]
并将其拆分为以下3种组合:
[[1, 2], [3, 4]]
[[1, 3], [2, 4]]
[[1, 4], [2, 3]]
它也应该适用于更长的序列,但不必处理奇数长度的序列。例如。
[1,2,3,4,5,6]
分成以下15种组合:
[[1, 2], [3, 4], [5, 6]]
[[1, 2], [3, 5], [4, 6]]
[[1, 2], [3, 6], [4, 5]]
[[1, 3], [2, 4], [5, 6]]
[[1, 3], [2, 5], [4, 6]]
[[1, 3], [2, 6], [4, 5]]
[[1, 4], [2, 3], [5, 6]]
[[1, 4], [2, 5], [3, 6]]
[[1, 4], [2, 6], [3, 5]]
[[1, 5], [2, 3], [4, 6]]
[[1, 5], [2, 4], [3, 6]]
[[1, 5], [2, 6], [3, 4]]
[[1, 6], [2, 3], [4, 5]]
[[1, 6], [2, 4], [3, 5]]
[[1, 6], [2, 5], [3, 4]]
... 等等。
名为 Maple 的 CAS 在名称setpartition下实现了此功能。
编辑:修复了 wks 指出的一个严重的深夜打字错误,并澄清了输出。