Trova duplicati in una lista in Python
-
Usa la funzione
set()
per trovare duplicati in una lista Python -
Usa il modulo
iteration_utils
per trovare duplicati in una lista Python
Questo tutorial mostra come cercare i duplicati all’interno di una lista in Python.
Usa la funzione set()
per trovare duplicati in una lista Python
Python set()
è una funzione per convertire una lista in un insieme. In base alla descrizione di un set e di una lista, convertire una lista in un set significherebbe rimuovere tutti i duplicati nell’lista.
Tuttavia, ciò che vogliamo è cercare le voci nell’lista che sono duplicate. Per farlo, usiamo ancora la funzione set()
, ma includiamo solo quelli con più di una voce nell’lista, il che significa che sono voci che hanno duplicati.
Dichiarare una funzione che cerca i duplicati all’interno di una lista e memorizzarli come un insieme.
def listToSet(listNums):
set([num for num in listNums if listNums.count(x) > 1])
Un altro approccio, se vuoi mantenere il risultato come una lista invece che come un insieme, è usare set()
e add()
per trovare i duplicati all’interno della lista e riconvertirli in una lista durante la restituzione.
def list_duplicates(listNums):
once = set()
seenOnce = once.add
twice = set(num for num in listNums if num in once or seenOnce(x))
return list(twice)
Questa funzione aggiunge la voce a once
se il numero appare per la prima volta e non esiste all’interno dell’insieme once
.
Entrambe le funzioni restituiranno lo stesso output, sebbene una sia un insieme e l’altra sia una lista. Il risultato produrrà tutte le voci duplicate in listNums
.
[1, 3, 5, 8]
Usa il modulo iteration_utils
per trovare duplicati in una lista Python
iteration_utils
ha due funzioni che possono cercare duplicati all’interno di una funzione predefinita: duplicates
e unique_everseen
.
Useremo la stessa definizione di lista listNums
sopra.
Importa duplicates
da iteration_utils
e usalo per restituire una lista di tutti i duplicati all’interno di listNums
.
from iteration_utils import duplicates
listNums = [1, 1, 2, 3, 3, 4, 5, 5, 5, 5, 6, 8, 8]
def listDups(listNums):
return list(duplicates(listNums))
L’output della funzione precedente restituirà una lista di tutte le voci duplicate all’interno di listNums
.
[1, 1, 3, 3, 5, 5, 5, 5, 8, 8]
Tuttavia, l’lista include anche le iterazioni delle voci duplicate. Ciò significa che restituirà ogni istanza della voce duplicata.
- È qui che entra in gioco
unique_everseen
. Questa funzione elabora l’lista per rimuovere tutte le istanze duplicate restituite daduplicates()
.
from iteration_utils import duplicates
from iteration_utils import unique_everseen
listNums = [1, 1, 2, 3, 3, 4, 5, 5, 5, 5, 6, 8, 8]
def listDupsUnique(listNums):
return list(unique_everseen(duplicates(listNums)))
Questa funzione restituirà quindi:
[1, 3, 5, 8]
In sintesi, ci sono 2 semplici soluzioni per cercare duplicati all’interno di una lista in Python. Il primo è usare set()
e altre funzioni di utilità degli insiemi in Python per cercare duplicati e memorizzarli in un’altra variabile. Un altro è del modulo iteration_utils
usando duplicates
e unique_everseen
, che più o meno fa la stessa cosa e produce lo stesso output.
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedInArticolo correlato - Python List
- Converti un dizionario in una lista in Python
- Rimuovi i duplicati dall'lista in Python
- Rimuovi tutte le occorrenze di un elemento da una lista in Python
- Ottieni la media di una lista in Python
- Qual è la differenza tra i metodi di elencazione, aggiungere ed estendere
- Come convertire una lista in stringa in Python