Python - comparacion de listas en python

 
Vista:

comparacion de listas en python

Publicado por carlos (8 intervenciones) el 13/11/2017 00:44:18
Hola, quiero comparar dos listas de nombres, que en la salida me imprima los nombres que NO están en las dos listas, también incluir los nombres que coincidan en alguna parte del nombre, ejemplo ( juan y juanes son distintos pero juanes contiene juan por lo consiguiente no me debe aparecer en la lista final de nombres que no están en las dos listas.

para el siguiente ejemplo la salida final tiene que ser jose y nico.
ejemplo:

1
2
3
4
5
6
7
8
9
10
11
lista1 = ["pedro", "juanes", "camilo", "pedro-1", "pedro", "jose", "nico"]
lista2 = ["camilo", "juan", "pedro"]
 
for item in lista1:
    for item2 in lista2:
          j = len(item2) # cantidad de letras del nombre del item2 para ponerlo como referencia para el item
                         #  juan tiene 4 letras j = 4,  juanes[:j] 
          if item2[:j] != item[:j]:
              print("diferentes %s" % item2)
          else:
              print("iguales %s" % item2)

Los "iguales" o la salida del else si me imprime los nombres iguales de la lista1 que hay en la lista2

El problema es en los "diferentes" o la salida if, me imprime tambien los iguales n-1 cantidad de veces que los diferentes.

En resumen, quiero que me salgan los nombres de la lista1 que no esten en la lista2 con la peculiaridad de que coja juanes y pedro-1 como juan y pedro.

MUCHAS GRACIAS POR CUALQUIER AYUDA.
saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 1.120
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

comparacion de listas en python

Publicado por kip (257 intervenciones) el 14/11/2017 03:15:06
Hola, algo muy basico y sencillo podria ser esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
lista1 = ["pedro", "juanes", "camilo", "pedro-1", "pedro", "jose", "nico"]
lista2 = ["camilo", "juan", "pedro"]
 
nombresNoListas = []
nombresSiListas = []
 
for item1 in lista1:
    existe = False
    for item2 in lista2:
        if item1.find(item2) < 0 and item2.find(item1) < 0:
            existe = False
        else:
            existe = True
            break
    if existe:
        nombresSiListas.append(item1)
    else:
        nombresNoListas.append(item1)
 
print('Nombres en ambas listas', nombresSiListas)
print('Nombres que no estan en ambas listas', nombresNoListas)

1
2
Nombres en ambas listas ['pedro', 'juanes', 'camilo', 'pedro-1', 'pedro']
Nombres que no estan en ambas listas ['jose', 'nico']

Podria mejorarse, pero creo que esto te servira para hacerlo, ten en cuenta que use find() para hacer la verificacion de los nombres como comentaste....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

comparacion de listas en python

Publicado por Carlos (8 intervenciones) el 14/11/2017 16:12:35
Muchas gracias, fue de gran ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de abzerox
Val: 425
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

comparacion de listas en python

Publicado por abzerox (109 intervenciones) el 14/11/2017 03:36:43
Hola, prueba de esta forma:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
lista1 = ["pedro", "juanes", "camilo", "pedro-1", "pedro", "jose", "nico"]
lista2 = ["camilo", "juan", "pedro"]
different = []
 
for item in lista1:
    x = True
    for item2 in lista2:
          if item2 in item:
              x = False
              break
    if x:
        different.append(item)
 
print(different)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

comparacion de listas en python

Publicado por Carlos (8 intervenciones) el 14/11/2017 16:13:51
Muchas gracias por la ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar