Durante dos listas,partido de lista en Python: obtener índices de una sub-lista en una lista más grande
a = [1, 2, 9, 3, 8, ...] (no duplicate values in a, but a is very big)
b = [1, 9, 1,...] (set(b) is a subset of set(a), 1<<len(b)<<len(a))
indices = get_indices_of_a(a, b)
cómo vamos get_indices_of_a
retorno indices = [0, 2, 0,...]
con array(a)[indices] = b
? ¿Hay un método más rápido que usar a.index
, que tarda demasiado?
Haciendo b
un conjunto es un método rápido de búsqueda de listas y volviendo índices (ver compare two lists in python and return indices of matched values), pero perderá el índice de la segunda 1
así como la secuencia de los índices en este caso.
+1. Esta es una buena respuesta para listas grandes donde reducirá drásticamente el tiempo necesario: naturalmente, en listas pequeñas, la creación del dict llevará más tiempo de lo que ahorrará. Dado el comentario del que hace la pregunta sobre mi respuesta, parece que hay grandes listas involucradas, así que esta es la respuesta deseada. –