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))
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))
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