"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como dividir uma coleção em todos os subconjuntos possíveis em Python?

Como dividir uma coleção em todos os subconjuntos possíveis em Python?

Postado em 2025-03-13
Navegar:294

How Can You Partition a Set Into All Its Possible Subsets in Python?

Particionando os conjuntos em python

A tarefa em questão é particionar um determinado conjunto de elementos em todos os subconjuntos possíveis. Por exemplo, a partição do conjunto [1, 2, 3] produz os seguintes subconjuntos:

[[1], [2], [3]]
[[1,2], [3]]
[[1], [2,3]]
[[1,3], [2]]
[[1,2,3]]

solução recursiva

Uma abordagem para esse problema é recurso. Dada uma partição dos elementos N-1, podemos estendê-la para criar uma partição de n elementos, incluindo o enésimo elemento em um dos subconjuntos existentes ou criando um novo subconjunto singleton que contém apenas o enésimo elemento.

este algoritmo reduzido e [] e [&] [] e descendentes e desvios

[] e descendentes e desvios
 Partição (coleção):
    Se Len (coleção) == 1:
        Rendimento [Coleção]
        retornar

    primeiro = coleção [0]
    para menor em partição (coleção [1:]):
        # Insira `primeiro` em cada um dos subconjuntos da subparição
        para n, subconjunto em enumerado (menor):
            render menor [: n] [[primeiro] subconjunto] menor [n 1:]
        # Coloque `primeiro` em seu próprio subconjunto 
        rendimento [[primeiro]] menor

algo = lista (intervalo (1,5))

para n, p em enumerado (partição (algo), 1):
    print (n, classificado (p)) 
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3