6 votes

obtenir toutes les partitions de l'ensemble python avec itertools

Comment obtenir toutes les partitions d'un ensemble ?

Par exemple, j'ai un tableau [1, 2, 3] . Je dois obtenir [[1], [2], [3]], [[1], [2, 3]], [[2], [1,3]], [[3], [1, 2]], [[1, 2, 3]] .

Maintenant, j'ai écrit ce code :

def neclusters(S, K):
    for splits in itertools.combinations(range(len(S)), K):
       yield np.split(S, 1 + np.array(splits))

Mais ce code ne renvoie pas [[2],[1,3]] .

Je pourrais prendre toutes les permutations de l'ensemble original et exécuter ce code sur elles. Mais cela peut-il être plus facile ?

-1voto

shiyon sufa Points 60
a = [1, 2, 3]
b = list()
for l in range(len(a)+1): b.append([c for c in combinations(a, l)])

print(b)

vérifier ceci

-1voto

Apero Points 1067

J'ai écrit celui-ci pour m'amuser :

def partition(a_list):
    yield [[x] for x in a_list]   
    for i in range(1, len(a_list) + 1):
        _l = a_list[:]
        yield [_l.pop(i-1), _l]
    yield a_list

my_list = [1, 2, 3]
print list(partition(my_list))

#or

for p in partition(my_list):
    print p

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X