5.10 bisect -- Algoritmo di bisezione di array

Questo modulo da la possibilità di mantenere una lista sempre ordinata senza la necessita di effettuare l'ordinamento dopo ogni inserzione. Per lunghe liste di elementi con operazioni di confronto dispendiose, grazie a questo modulo si può ottenere un miglioramento rispetto all'approccio più comune. Il modulo è chiamato bisect poiché internamente utilizza un algoritmo di bisezione. Il codice sorgente può essere molto utile come esempio di funzionamento dell'algoritmo (le condizioni al contorno vengono già definite!).

Vengono fornite le seguenti funzioni:

bisect_left( list, item[, lo[, hi]])
Individua l'esatto punto di inserimento dell'elemento item nella lista list in modo da mantenere l'ordine. I parametri lo e hi possono venire utilizzati per specificare il sotto insieme della lista da considerare; se non specificati, viene utilizzata l'intera lista. Se item è già presente in list, il punto di inserimento si troverà prima (a sinistra) di ogni voce esistente di quell'elemento. Il valore restituito è utilizzabile come primo parametro del metodo list.insert(). Si presuppone che list sia già ordinata. Nuovo nella versione 2.1.

bisect_right( list, item[, lo[, hi]])
Simile a bisect_left(), ma restituisce un punto di inserzione dopo (a destra) ogni voce esistente di item in list. Nuovo nella versione 2.1.

bisect( ...)
Sinonimo di bisect_right().

insort_left( list, item[, lo[, hi]])
Inserisce item in list in modo da mantenere l'ordine. È equivalente a list.insert(bisect.bisect_left(list, item, lo, hi), item). Si presuppone che list sia già ordinata. Nuovo nella versione 2.1.

insort_right( list, item[, lo[, hi]])
Simile a insort_left(), ma item viene inserito in list dopo tutte le occorrenze di item presenti. Nuovo nella versione 2.1.

insort( ...)
Sinonimo di insort_right().



Subsections
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.