Per due liste,lista partita in python: ottenere indici di un sotto-elenco in una lista più ampia
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)
come lasciare get_indices_of_a
ritorno indices = [0, 2, 0,...]
con array(a)[indices] = b
? C'è un metodo più veloce rispetto all'utilizzo di a.index
, che richiede troppo tempo?
Fare b
un insieme è un metodo rapido di corrispondenza elenchi e ritorno indici (vedi compare two lists in python and return indices of matched values), ma perderà l'indice del secondo 1
così come la sequenza degli indici in questo caso.
+1. Questa è una buona risposta per elenchi di grandi dimensioni in cui ridurrà drasticamente il tempo necessario; naturalmente, in piccole liste, la creazione del testo richiederà più tempo di quanto non salverà. Dato il commento del richiedente sulla mia risposta, sembra che siano coinvolte grandi liste, quindi questa è la risposta desiderata. –