Étant donné un ensemble
{0, 1, 2, 3}
Comment puis-je produire les sous-ensembles :
[set(),
{0},
{1},
{2},
{3},
{0, 1},
{0, 2},
{0, 3},
{1, 2},
{1, 3},
{2, 3},
{0, 1, 2},
{0, 1, 3},
{0, 2, 3},
{1, 2, 3},
{0, 1, 2, 3}]
Étant donné un ensemble
{0, 1, 2, 3}
Comment puis-je produire les sous-ensembles :
[set(),
{0},
{1},
{2},
{3},
{0, 1},
{0, 2},
{0, 3},
{1, 2},
{1, 3},
{2, 3},
{0, 1, 2},
{0, 1, 3},
{0, 2, 3},
{1, 2, 3},
{0, 1, 2, 3}]
Je voulais simplement fournir la solution la plus compréhensible, la version anti-code-golf.
from itertools import combinations
l = ["x", "y", "z", ]
def powerset(items):
combo = []
for r in range(len(items) + 1):
#use a list to coerce a actual list from the combinations generator
combo.append(list(combinations(items,r)))
return combo
l_powerset = powerset(l)
for i, item in enumerate(l_powerset):
print "All sets of length ", i
print item
Les résultats
Tous les ensembles de longueur 0
[()]
Tous les ensembles de longueur 1
[('x',), ('y',), ('z',)]
Tous les ensembles de longueur 2
[('x', 'y'), ('x', 'z'), ('y', 'z')]
Tous les ensembles de longueur 3
[('x', 'y', 'z')]
Pour en savoir plus voir les docs itertools ainsi que l'entrée de wikipedia sur ensembles de puissance
from itertools import combinations
def subsets(arr: set) -> list:
subsets = []
[subsets.extend(list(combinations(arr,n))) for n in range(len(arr))]
return subsets
a = {1,2,3}
print(subsets(a))
Salida:
[(), (1,), (2,), (3,), (1, 2), (1, 3), (2, 3)]
Pour les sous-ensembles triés, on peut le faire :
# sorted subsets
print(sorted(subsets(a)))
Salida:
[(), (1,), (1, 2), (1, 3), (2,), (2, 3), (3,)]
Juste une petite mise à jour rapide sur les réglages de puissance !
L'ensemble de puissance d'un ensemble X, est simplement l'ensemble de tous les sous-ensembles de X comprenant l'ensemble vide
Exemple d'ensemble X = (a,b,c)
Ensemble de puissance = { { a , b , c } , { a , b } , { a , c } , { b , c } , { a } , { b } , { c } , { } }
Voici une autre façon de trouver le jeu de puissance :
def power_set(input):
# returns a list of all subsets of the list a
if (len(input) == 0):
return [[]]
else:
main_subset = [ ]
for small_subset in power_set(input[1:]):
main_subset += [small_subset]
main_subset += [[input[0]] + small_subset]
return main_subset
print(power_set([0,1,2,3]))
le plein crédit à source
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.