I denne vejledning vil vi opdage to Python-metoder til at finde forskellen mellem to lister. En af metoderne er ved hjælp af Python Set. Den konverterer først listerne til sæt og får derefter den unikke del ud af det.
Andre ikke-sætmetoder sammenligner to lister element for element og samler de unikke. Vi kan implementere disse ved at bruge nested for loops og med list comprehension.
Forresten, hvis du ikke er klar over sættene i Python, så følg nedenstående tutorial. Den vil hurtigt introducere dig til, hvordan Python implementerer den matematiske form af Set.
Python Set
Python måder at finde forskellen mellem to lister
Python Set synes at være det mest oplagte valg til at identificere den fælles såvel som forskellen mellem to lister. Så vi vil udforske det først og derefter vil vi bruge indlejrede loops og listeforståelse.
Hvor vi går videre til løsningsdelen, skal vi definere testparametrene, dvs, de to lister, som vi skal finde forskellen.
# Test Inputlist_a = list_b =
Og vi ønsker, at vores løsning skal give følgende output:
# Expected Result# list_out = list_a - list_blist_out =
Lad os begynde at oprette et program til at finde forskellen mellem to lister, først ved at bruge sæt.
Brug set() til at finde forskellen mellem to lister
I denne fremgangsmåde udleder vi først to SETs (lad os sige set1 og set2) fra LISTs (lad os sige list1 og list2) ved at overgive dem til funktionen set(). Derefter udfører vi forskelsoperationen. Den vil returnere de elementer fra liste1, som ikke findes i den anden.
Her er et eksempel på et Python-program til at få forskellen mellem to lister.
"""Desc: Using set() to find the difference between two lists in Python"""def list_diff(list1, list2): return (list(set(list1) - set(list2))) # Test Inputlist1 = list2 = # Run Testprint(list_diff(list1, list2))
Når du kører dette, bør du se følgende resultat:
Og uden set(), ved hjælp af indlejrede sløjfer
I denne metode bruger vi indlejrede For Loop til at sammenligne hvert element i den første liste med den anden. Og mens vi gennemløber den, føjer vi hvert element, der ikke matcher, til en ny (og tom) liste.
Den nye liste vil til sidst indeholde forskellen mellem de to givne sekvenser. Nedenfor er et eksempelprogram til at demonstrere denne fremgangsmåde.
"""Desc: Nested loop to find the difference between two lists in Python"""def list_diff(list1, list2): out = for ele in list1: if not ele in list2: out.append(ele) return out# Test Inputlist1 = list2 = # Run Testprint(list_diff(list1, list2))
Når du har kørt ovenstående program, bør du se følgende resultat:
Og uden set(), ved hjælp af list comprehension
Det er næsten en lignende teknik, som vi brugte i det foregående. Her har vi erstattet de indlejrede sløjfer med syntaksen list comprehension.
Se eksemplet nedenfor.
"""Desc: List comprehension to find the difference between two lists in Python"""def list_diff(list1, list2): out = return out# Test Inputlist1 = list2 = # Run Testprint(list_diff(list1, list2))
Når du har kørt ovenstående program, bør du se følgende resultat: