Come per rimuovere i duplicati da una sequenza in Python

November 10

In Python, è possibile programmare una funzione per rimuovere i duplicati da una sequenza utilizzando diversi metodi, ma a seconda del tipo di tipi di dati contiene una sequenza, un metodo può essere più veloce di un altro, ma potrebbe non funzionare più spesso. Ad esempio, è possibile programmare una funzione che utilizza un dizionario con una collezione di chiavi univoche per controllare i duplicati in modo rapido, ma può anche non funzionare. D'altra parte, si può anche programmare una funzione che controlla in modo ricorsivo ogni elemento in una sequenza contro gli elementi di un'altra sequenza temporanea. Questo funziona sempre per rimuovere i duplicati, ma richiede molto più tempo.

istruzione

1 Aprire la shell Python o riga di comando.

2 Digitare quanto segue:

def removeDuplicatesOne (mySeq):

tempSeq = {}

provare:

per x in mySeq:

tempSeq [x] = 1

ad eccezione TypeError:

del tempSeq

altro:

tornare tempSeq.keys ()

Ricordarsi di rientrare correttamente per evitare un errore di sintassi. Questo definisce una funzione e accetta una sequenza come parametro. Esso utilizza un dizionario per controllare la sequenza prevista per la funzione di duplicati e negozi di utenti non duplicati in una sequenza temporanea, quindi restituisce una sequenza ordinata.

3 Digitare quanto segue:

def removeDuplicatesTwo (mySeq):

tempSeq = []

per x in mySeq:

se x non in tempSeq:

tempSeq.append (x)

tornare tempSeq

Questo definisce una funzione che utilizza un algoritmo più lento che la precedente, ma funziona più spesso pure. Si crea una sequenza temporanea, poi semplicemente cicli attraverso ogni elemento della sequenza e controlli esistenti per vedere se tale elemento esiste in quella temporanea. In caso contrario, tale elemento viene aggiunto alla sequenza temporanea. Se è così, salta che poi ricomincia con il prossimo punto. Esso restituisce una sequenza non ordinata.

4 Digitare quanto segue:

removeDuplicatesOne ([4,2,5,1,6,3,4,2,6,4,2,6]):

La sequenza viene passato alla funzione ei duplicati vengono rimossi. Python restituisce la seguente sequenza: [1,2,3,4,5,6].

5 Digitare quanto segue:

removeDuplicatesTwo ([4,2,5,1,6,3,4,2,6,4,2,6]):

La sequenza viene passato alla funzione ei duplicati vengono rimossi. Python restituisce la seguente sequenza: [4,2,5,1,6,3].

Consigli e avvertenze

  • È possibile combinare queste due funzioni in una funzione. Qualsiasi chiamata alla funzione comporterà che tentare il primo metodo di rimozione prima duplicato e se fallisce, va al secondo metodo. A volte, questo richiede un po 'più a lungo e richiede un po' di lavoro in più dalla funzione, ma aumenta la probabilità complessiva di successo, soprattutto quando non si sa se la sequenza si passa lavorerà con il primo metodo.