Python: todas las posibles combinaciones únicas de tamaño K hasta N

A veces, mientras trabajamos con el dominio de Python, podemos tener un problema en el que necesitamos producir varias combinaciones de elementos. Esto puede ser combinaciones únicas de tamaño K hasta N. Este problema puede tener aplicación en dominios de datos y programación escolar. Analicemos ciertas formas en que se puede realizar esta tarea.

Entrada : N = 2, K = 3
Salida : [(0, 0, 0), (0, 0, 1), (0, 1, 1), (1, 1, 1)]

Entrada : N = 4, K = 2
Salida : [(0, 0), (0, 1), (0, 2), (0, 3), (1, 1), (1, 2), (1 , 3), (2, 2), (2, 3), (3, 3)]

Método #1: Usar product() + setdefault()el bucle +
La combinación de las funciones anteriores ofrece un enfoque para este problema. En esto, usamos el producto para realizar todas las combinaciones y eliminar los duplicados usando setdefault() y bucle por enfoque de fuerza bruta.

# Python3 code to demonstrate working of 
# All Possible unique K size combinations till N
# Using product() + setdefault() + loop
from itertools import product
  
# initializing N
N = 4
  
# Initialize K
K = 3
  
# All Possible unique K size combinations till N
# Using product() + setdefault() + loop
temp = list(product(range(N), repeat = K))
res = {}
for tup in temp:
    key = tuple(sorted(tup))
    res.setdefault(key, []).append(tup)
res = list(res.keys())
  
# printing result 
print("The unique combinations : " + str(res)) 
Producción :

Las combinaciones únicas: [(0, 0, 0), (0, 0, 1), (0, 0, 2), (0, 0, 3), (0, 1, 1), (0, 1, 2), (0, 1, 3), (0, 2, 2), (0, 2, 3), (0, 3, 3), (1, 1, 1), (1, 1, 2) , (1, 1, 3), (1, 2, 2), (1, 2, 3), (1, 3, 3), (2, 2, 2), (2, 2, 3), ( 2, 3, 3), (3, 3, 3)]

Método #2: Usarcombinations_with_replacement()
This ofrece un método alternativo para resolver este problema. Esta función realiza internamente todo lo necesario para llegar a la solución.

# Python3 code to demonstrate working of 
# All Possible unique K size combinations till N
# Using combinations_with_replacement()
from itertools import product, combinations_with_replacement
  
# initializing N
N = 4
  
# Initialize K
K = 3
  
# All Possible unique K size combinations till N
# Using combinations_with_replacement()
res = list(combinations_with_replacement(range(N), K))
  
# printing result 
print("The unique combinations : " + str(res)) 
Producción :

Las combinaciones únicas: [(0, 0, 0), (0, 0, 1), (0, 0, 2), (0, 0, 3), (0, 1, 1), (0, 1, 2), (0, 1, 3), (0, 2, 2), (0, 2, 3), (0, 3, 3), (1, 1, 1), (1, 1, 2) , (1, 1, 3), (1, 2, 2), (1, 2, 3), (1, 3, 3), (2, 2, 2), (2, 2, 3), ( 2, 3, 3), (3, 3, 3)]

Publicación traducida automáticamente

Artículo escrito por manjeet_04 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 *