Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Eliminar combinaciones repetidas
#1
Buenos días, tengo un algoritmo sencillo, que genera números de 012 a 978, la idea es que si creo la combinación 0,1,2, ya no repita la combinación de las otras formas como 1,0,2 o 2,1,0 o 2,0,1.

Código:
for i in range (10):
   for j in range (10):
       for k in range (10):
           if i != j and j != k and k!=i:
               print(i,j,k)
Responder
#2
Hola, bienvenido. Siempre que pienses en "todas las combinaciones posibles" de algo, recuerda la función itertools.permutations, pues es justamente lo que hace. Por ejemplo, para obtener todas las combinaciones posibles de los números 1, 2 y 3:

Código:
>>> import itertools
>>> list(itertools.permutations("123"))
[('1', '2', '3'), ('1', '3', '2'), ('2', '1', '3'), ('2', '3', '1'), ('3', '1','2'), ('3', '2', '1')]

Entonces ahora puedes aplicarlo a tu código:

Código:
from itertools import permutations

combinations = []

for i in range (10):
    for j in range (10):
        for k in range (10):
            if i != j and j != k and k!=i:
                item = "{}{}{}".format(i, j, k)
                append = True
                for combination in permutations(item):
                    if "".join(combination) in combinations:
                        append = False
                        break
                if append:
                    combinations.append(item)
                    print(i, j, k)

Un saludo.
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)