Programa Python para obtener todos los subconjuntos del tamaño dado de un conjunto

Dado un conjunto, escriba un programa en Python para generar todos los subconjuntos posibles de tamaño n del conjunto dado dentro de una lista.
 

Ejemplos: 

Input : {1, 2, 3}, n = 2
Output : [{1, 2}, {1, 3}, {2, 3}]

Input : {1, 2, 3, 4}, n = 3
Output : [{1, 2, 3}, {1, 2, 4}, {1, 3, 4}, {2, 3, 4}]

Ya hemos discutido el mismo problema usando el enfoque Naive en este artículo . Este artículo se centra en los enfoques Pythonic para imprimir todos los subconjuntos de un tamaño determinado de un conjunto.

Python tiene itertools.combinations(iterable, n) que devuelve n subsecuencias de elementos de la entrada iterable. Esto se puede usar para imprimir todos los subconjuntos de un tamaño determinado de un conjunto. Ahora, tenemos varias alternativas para usar esta función.

Código #1: 
simplemente pase el conjunto como iterable y el tamaño como argumentos en itertools.combinations() para obtener directamente la lista de combinación.
 

Python3

# Python Program to Print
# all subsets of given size of a set
 
import itertools
 
def findsubsets(s, n):
    return list(itertools.combinations(s, n))
 
# Driver Code
s = {1, 2, 3}
n = 2
 
print(findsubsets(s, n))
Producción: 

[(1, 2), (1, 3), (2, 3)]

 

  
Código n.º 2: 
también podemos usar una alternativa al método discutido anteriormente que es el mapeo establecido en la función itertools.combinations(). 
 

Python3

# Python Program to Print
# all subsets of given size of a set
 
import itertools
from itertools import combinations, chain
 
def findsubsets(s, n):
    return list(map(set, itertools.combinations(s, n)))
     
# Driver Code
s = {1, 2, 3}
n = 2
 
print(findsubsets(s, n))
Producción: 

[{1, 2}, {1, 3}, {2, 3}]

 

  
Código #3: 
Otro método es usar for loop en la función itertools.combinations() y agregar los conjuntos de combinación a la lista. 
 

Python3

# Python Program to Print
# all subsets of given size of a set
 
import itertools
# def findsubsets(s, n):
def findsubsets(s, n):
    return [set(i) for i in itertools.combinations(s, n)]
     
# Driver Code
s = {1, 2, 3, 4}
n = 3
 
print(findsubsets(s, n))

Producción:

[{1, 2, 3}, {1, 2, 4}, {1, 3, 4}, {2, 3, 4}]

Código #4:

es sin usar

Python3

def subsets(numbers):
    if numbers == []:
        return [[]]
    x = subsets(numbers[1:])
    return x + [[numbers[0]] + y for y in x]
 
# wrapper function
def subsets_of_given_size(numbers, n):
    return [x for x in subsets(numbers) if len(x)==n]
 
if __name__ == '__main__':
    numbers = [1, 2, 3, 4]
    n = 3
    print(subsets_of_given_size(numbers, n))
[[2, 3, 4], [1, 3, 4], [1, 2, 4], [1, 2, 3]]

Publicación traducida automáticamente

Artículo escrito por Smitha Dinesh Semwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *