Python encuentra operaciones de matriz duplicadas
Frecuentes
Visto 199 veces
0
¿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?
3 Respuestas
6
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
1
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
0
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 python or haz tu propia pregunta.
Es esto lo que estás buscando: stackoverflow.com/questions/5640630/array-filter-in-python - Justin Ethier
¿Se puede hacer sin comprensión de lista? Rajeev
¿Responde esto a tu pregunta? - Nadir Sampaoli
@Rajeev: ¿por qué quieres hacerlo sin una lista de comprensión? No podemos adivinar sus requisitos, debe explicar estas cosas. - Ned Batchelder
Espero cosas simples como ab y probé list comptrehensiom - Rajeev