Rimuovi i duplicati dall'lista in Python

Sahil Bhosale 25 aprile 2021
  1. Rimuovi duplicati da una lista usando la funzione set() in Python
  2. Rimuovi i duplicati e mantieni l’ordine in una lista usando OrderDict in Python
Rimuovi i duplicati dall'lista in Python

Un List in Python è una struttura dati utilizzata per memorizzare i dati in un ordine particolare. L’lista può memorizzare dati di più tipi, ad esempio int, float, stringa, un altro lista, ecc. Gli liste sono modificabili, il che significa che i valori una volta creati possono essere modificati in seguito. È rappresentato da parentesi quadre [].

myList = [2, 1, 2, 3, 0, 6, 7, 6, 4, 8]
print(myList)

Produzione:

[2, 1, 2, 3, 0, 6, 7, 6, 4, 8]

Puoi rimuovere gli elementi duplicati dall’lista sopra usando un cicli for come mostrato di seguito.

myList = [2, 1, 2, 3, 0, 6, 7, 6, 4, 8]

resultantList = []

for element in myList:
    if element not in resultantList:
        resultantList.append(element)

print(resultantList)

Produzione:

[2, 1, 3, 0, 6, 7, 4, 8]

Se non vuoi scrivere così tanto codice, ci sono due modi più popolari per rimuovere elementi duplicati da una lista in Python.

  1. Se non vuoi mantenere l’ordine degli elementi all’interno di una lista dopo aver rimosso gli elementi duplicati, puoi utilizzare una struttura dati Set.
  2. Se vuoi mantenere l’ordine degli elementi all’interno di una lista dopo aver rimosso gli elementi duplicati, puoi usare qualcosa chiamato OrderedDict.

Rimuovi duplicati da una lista usando la funzione set() in Python

Per rimuovere i duplicati da una lista, possiamo utilizzare un’altra struttura di dati chiamata Set. Un Set è un tipo di dati non ordinato che contiene solo valori univoci. L’ordine in cui l’insieme memorizza i valori è diverso dall’ordine in cui potresti aver inserito gli elementi in un insieme. Gli insiemi sono rappresentati usando le parentesi graffe {}.

Quindi, ogni volta che si stampano gli elementi memorizzati all’interno del set, l’ordine dell’output sarà diverso. Questo è il motivo per cui non è possibile eseguire l’indicizzazione su un set perché non è ordinato.

mySet = {80, 10, 50, 18, 3, 50, 8, 18, 9, 8}
print(mySet)

Produzione:

{3, 8, 9, 10, 80, 18, 50}

Nota come è cambiato l’ordine degli elementi dopo aver stampato gli elementi.

In un set non sono consentiti duplicati, il che significa che se hai lo stesso elemento più volte, il set lo considererà come un elemento. Questo è il motivo per cui utilizziamo un set per rimuovere gli elementi duplicati da una lista in Python.

original_list = [80, 10, 50, 18, 3, 50, 8, 18, 9, 8]

print("Original List is: ", original_list)

convert_list_to_set = set(original_list)
print("Set is: ", convert_list_to_set)

new_list = list(convert_list_to_set)
print("Resultant List is: ", new_list)

original_list = list(convert_list_to_set)
print("Removed duplicates from original list: ", original_list)

Produzione:

Original List is:  [80, 10, 50, 18, 3, 50, 8, 18, 9, 8]
Set is:  {3, 8, 9, 10, 80, 18, 50}
Resultant List is:  [3, 8, 9, 10, 80, 18, 50]
Removed duplicates from original list:  [3, 8, 9, 10, 80, 18, 50]

Convertiamo una lista in un insieme applicando la funzione set(). Quindi convertiamo l’insieme convertito, che ha rimosso i duplicati, in una lista applicando la funzione list().

Rimuovi i duplicati e mantieni l’ordine in una lista usando OrderDict in Python

Il problema con l’utilizzo di un set per rimuovere gli elementi duplicati è che non memorizza gli elementi in un ordine particolare. Quindi, se non ti interessa l’ordine in cui gli elementi sono memorizzati nella lista risultante, cioè la lista che hai creato dopo aver rimosso i duplicati, allora in quel caso puoi andare con la struttura dei dati Set.

Ma se vuoi mantenere l’ordine degli elementi all’interno di una lista dopo aver rimosso i duplicati, puoi usare OrderedDict in Python. OrderDict conserva l’ordine in cui gli elementi sono stati inseriti nella lista. Per usare OrderDict devi prima importarlo dal modulo collections in Python from collections import OrderedDict.

from collections import OrderedDict

myList = [2, 1, 2, 3, 0, 6, 7, 6, 8, 0, 4, 8]

final_list = list(OrderedDict.fromkeys(myList))

print(final_list)

Produzione:

[2, 1, 3, 0, 6, 7, 8, 4]
Sahil Bhosale avatar Sahil Bhosale avatar

Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.

LinkedIn

Articolo correlato - Python List