quali sono le mie opzioni lì? Ho bisogno di chiamare un sacco di append
s (all'estremità destra) e popleft
s (dall'estremità sinistra, naturalmente), ma anche di leggere dal centro dello storage, che crescerà costantemente, secondo la natura dell'algoritmo. Mi piacerebbe avere tutte queste operazioni in O(1)
.O (1) deque indicizzabile di interi in Python
Potrei implementarlo in C abbastanza facilmente su array con indirizzo circolare (come si dice?) Che crescerebbe automaticamente quando è pieno; ma per quanto riguarda Python? Anche i puntatori ad altre lingue sono apprezzati (mi rendo conto che il tag "collections" è più orientato a Java ecc. E apprezzerebbe il confronto, ma come obiettivo secondario).
Provengo da uno sfondo Lisp e sono rimasto stupito nell'apprendere che in Python la rimozione di un elemento head da un elenco è un'operazione O(n)
. A deque
potrebbe essere una risposta, tranne la documentazione dice che l'accesso è O(n)
nel mezzo. C'è qualcos'altro, pre-costruito?
in generale, http://en.wikipedia.org/wiki/Hashed_array_tree potrebbe essere rilevante. –