如何获取集合的所有分区?
例如,我有一个数组[1, 2, 3]
。我需要得到[[1], [2], [3]], [[1], [2, 3]], [[2], [1,3]], [[3], [1, 2]], [[1, 2, 3]]
。
现在,我写了这个代码:
def neclusters(S, K):
for splits in itertools.combinations(range(len(S)), K):
yield np.split(S, 1 + np.array(splits))
但该代码不返回[[2],[1,3]]
。
我可以把原始集合的所有排列,并在它们上面运行这个代码。但是,这可以变得更容易吗?
3条答案
按热度按时间e1xvtsh31#
我写这篇文章是为了好玩:
dfty9e192#
检查这个
avwztpqn3#
这个函数是more_itertools.powerset(),没有其他答案指向它,所以我把它留在这里。
https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.powerset