[Python] Comparar listas de palabras

Iniciado por Meta, 14 Noviembre 2010, 00:45 AM

0 Miembros y 1 Visitante están viendo este tema.

Meta

Buenas:

Aquí si que Python me tumba.

Ver ejercicio.

Parece que aquí voy a tardar un tiempito con este ejercicio ya que parece o al menos me da la impresión que es código largo.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

.:WindHack:.

Realmente el código no es extenso. A mí se me ocurrió hacerlo de la siguiente manera:

Código (python) [Seleccionar]
sString = raw_input('Cadena: ') # Pedimos la cadena...
sString = sString.lower() # Convertimos a minusculas...
lListA = sString.split() # Creo la lista con todos los elementos de la cadena...
lListB = [] # Lista vacia

for i in lListA: # Recorro la lista original
if i not in lListB: # Si el elemento no esta en la otra lista...
lListB.append(i) #... lo agrego

print lListB

Follow me on Twitter: @windhack | Visit my website: www.daw-labs.com

"The only thing they can't take from us are our minds."

Meta

#2
Gracias, me funciona.

Con C# lo he encontrado así:

Código (csharp) [Seleccionar]
static void Main(string[] args)
       {
           List<int> lista = new List<int>(9;
           int ingresos = 0;

           while(ingresos <= 9)
           {
               Console.WriteLine("Ingrese un numero positivo:");
               string valor = Console.ReadLine();

               int valint = 0;
               if (!int.TryParse(valor, out valint))
               {
                   Console.WriteLine("El valor ingresado no es numerico");
                   continue;
               }

               if(valint < 0)
               {
                   Console.WriteLine("El valor ingresado debe ser positivo");
                   continue;
               }

               lista.Add(valint);
               ingresos++;

           }

           //se muestra la lista de valores ingresados
           Console.WriteLine("Numeros Ingresados:");
           foreach (int item in lista)
           {
               Console.WriteLine(item);
           }

       }


Edito:


Otra forma de hacerlo.

Código (python) [Seleccionar]
# Declaro las listas
lista_1 = ["Una","frase","formada","con","palabras"]
lista_2 = ["Otra","frase","con","otras","palabras"]
resultado = []

# Convierto la palabra a minúsculas y la agrego a la lista
for palabra in lista_1:
    palabra_min = palabra.lower()
    resultado.append(palabra_min)

# Comparo ambas listas y luego convierto a mínusculas
for a in lista_2:
    if a not in lista_1:
        palabra_min = a.lower()
        resultado.append(palabra_min)

print resultado
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Novlucker

#3
Aunque creo que usaría el método de .:WindHack:. por simplicidad, aquí tienes ooootra manera más de hacerlo sin usar una segunda lista, solo modificando la que hemos obtenido en principio.

Código (python) [Seleccionar]
frase = raw_input('Ingresa una frase: ')
lista = frase.lower().split(' ')
i = 0
while i<len(lista):
   if lista[i] in lista[:i]:
       lista.pop(i)
   else:
       i+=1
print lista


Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein