Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Cómo saber si una lista tiene elementos repetidos
#1
Tengo este código

from itertools import product

frase = {'1' : [' w', ' x', ' y', ' z'], '2' : [' w', ' x', ' y', ' z'], '3' : [' w', ' x', ' y', ' z']}

for c in product(*[frase[x] for x in sorted(frase.keys())]):
    print(''.join( c))



y este es el resultado



w w w
w w x
w w y
w w z
w x w
w x x
w x y
w x z
w y w
w y x
w y y
w y z
w z w
w z x
w z y
w z z
x w w
x w x
x w y
x w z
x x w
x x x
x x y
x x z
x y w
x y x
x y y
x y z
x z w
x z x
x z y
x z z
y w w
y w x
y w y
y w z
y x w
y x x
y x y
y x z
y y w
y y x
y y y
y y z
y z w
y z x
y z y
y z z
z w w
z w x
z w y
z w z
z x w
z x x
z x y
z x z
z y w
z y x
z y y
z y z
z z w
z z x
z z y
z z z




Quiero saber como puedo hacer para que solo imprima las que no tienen letras repetidas, si alguien me puede ayudar se lo agradecería.
Responder
#2
Hola, bienvenido.

Lo podrías hacer así:

  1. from itertools import product
  2. import collections
  3.  
  4. frase = {'1' : [' w', ' x', ' y', ' z'], '2' : [' w', ' x', ' y', ' z'], '3' : [' w', ' x', ' y', ' z']}
  5.  
  6. for c in product(*[frase[x] for x in sorted(frase.keys())]):
  7. if not any(filter(lambda x: x > 1, collections.Counter( c).values())):
  8. print(''.join( c))


Sobre la función filter(): https://micro.recursospython.com/recurso...ilter.html.
Sobre la función any(): https://micro.recursospython.com/recurso...n-any.html.

Saludos
Responder
#3
(07-11-2021, 05:42 PM)Francisco escribió: Hola, bienvenido.

Lo podrías hacer así:

  1. from itertools import product
  2. import collections
  3.  
  4. frase = {'1' : [' w', ' x', ' y', ' z'], '2' : [' w', ' x', ' y', ' z'], '3' : [' w', ' x', ' y', ' z']}
  5.  
  6. for c in product(*[frase[x] for x in sorted(frase.keys())]):
  7.     if not any(filter(lambda x: x > 1, collections.Counter( c).values())):
  8.         print(''.join( c))


Sobre la función filter(): https://micro.recursospython.com/recurso...ilter.html.
Sobre la función any(): https://micro.recursospython.com/recurso...n-any.html.

Saludos

 

Buenísimo, muchísimas gracias me sirvió tu solución ahora me fijo en los enlaces que pasaste como se aplica todo. En caso de que tenga a alguna duda sobre alguna cosa te puedo escribir directamente a ti? Si no es mucha molestia claro.
Responder
#4
(07-11-2021, 05:42 PM)Francisco escribió: Hola, bienvenido.

Lo podrías hacer así:

  1. from itertools import product
  2. import collections
  3.  
  4. frase = {'1' : [' w', ' x', ' y', ' z'], '2' : [' w', ' x', ' y', ' z'], '3' : [' w', ' x', ' y', ' z']}
  5.  
  6. for c in product(*[frase[x] for x in sorted(frase.keys())]):
  7.     if not any(filter(lambda x: x > 1, collections.Counter( c).values())):
  8.         print(''.join( c))


Sobre la función filter(): https://micro.recursospython.com/recurso...ilter.html.
Sobre la función any(): https://micro.recursospython.com/recurso...n-any.html.

Saludos




Ahora estoy tratando de hacerlo asi: 

from itertools import product
import collections

frase = {
    '1' : ['o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'],
    '2' : [' o', ' p', ' q', ' r', ' s', ' t', ' u', ' v', ' w', ' x', ' y', ' z'],
    '3' : [' o', ' p', ' q', ' r', ' s', ' t', ' u', ' v', ' w', ' x', ' y', ' z'],
    '4' : [' o', ' p', ' q', ' r', ' s', ' t', ' u', ' v', ' w', ' x', ' y', ' z'],
    '5' : [' o', ' p', ' q', ' r', ' s', ' t', ' u', ' v', ' w', ' x', ' y', ' z'],
    '6' : [' o', ' p', ' q', ' r', ' s', ' t', ' u', ' v', ' w', ' x', ' y', ' z'],
    '7' : [' o', ' p', ' q', ' r', ' s', ' t', ' u', ' v', ' w', ' x', ' y', ' z'],
    '8' : [' o', ' p', ' q', ' r', ' s', ' t', ' u', ' v', ' w', ' x', ' y', ' z'],
    '9' : [' o', ' p', ' q', ' r', ' s', ' t', ' u', ' v', ' w', ' x', ' y', ' z'],
    '10' : [' o \n', ' p \n', ' q \n', ' r \n', ' s \n', ' t \n', ' u \n', ' v \n', ' w \n', ' x \n', ' y \n', ' z \n'],
}

for c in product(*[frase[x] for x in sorted(frase.keys())]):
    if not any(filter(lambda x: x > 1, collections.Counter( c).values())):
        print(''.join(c))



 pero se queda cargando y no arranca, sabras porque es?
Responder
#5
¡De nada! En mi caso tarda unos segundos, pero luego empieza a imprimir. Depende de la velocidad de cada computadora y cuán rápido se pueda ejecutar el product().

Saludos
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)