Python encuentra operaciones de matriz duplicadas

¿Cómo puedo formar una matriz (c) compuesta por elementos de b que no están en a?

a=[1,2,"ID123","ID126","ID124","ID125"]
b=[1,"ID123","ID124","ID125","343434","fffgfgf"]
c= []

¿Se puede hacer esto sin usar una lista de comprensión?

preguntado el 12 de junio de 12 a las 18:06

¿Se puede hacer sin comprensión de lista?

@Rajeev: ¿por qué quieres hacerlo sin una lista de comprensión? No podemos adivinar sus requisitos, debe explicar estas cosas. -

Espero cosas simples como ab y probé list comptrehensiom -

3 Respuestas

Si las listas son largas, desea hacer un conjunto de a primero:

a_set = set(a)
c = [x for x in b if x not in a_set]

Si el orden de los elementos no importa, simplemente use conjuntos:

c = list(set(b) - set(a))

Las listas de Python no ofrecen un directo - operador, como lo hacen las matrices de Ruby.

Respondido el 12 de junio de 12 a las 19:06

Usar lista de comprensión es más directo:

[i for i in b if i not in a]
c
['343434', 'fffgfgf']

Sin embargo, si realmente lo hiciste no Si quieres usar la comprensión de listas, podrías usar un expresión generadora:

c = (i for i in b if i not in a)

Esto tampoco generará la lista de resultados de una sola vez en la memoria (en caso de que eso sea una preocupación).

Respondido el 12 de junio de 12 a las 19:06

Lo siguiente lo hará:

c = [v for v in b if v not in a]

If a es largo, podría mejorar el rendimiento para convertirlo en un conjunto:

a_set = set(a)
c = [v for v in b if v not in a_set]

Respondido el 12 de junio de 12 a las 18:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.