I den här handledningen kommer vi att upptäcka två Pythonmetoder för att hitta skillnaden mellan två listor. En av metoderna är att använda Python Set. Den omvandlar först listorna till uppsättningar och hämtar sedan den unika delen ur det.
Andra metoder som inte är uppsättningar jämför två listor element för element och samlar in de unika delarna. Vi kan implementera dessa genom att använda inbäddade for-slingor och med list comprehension.
Förresten, om du inte är medveten om uppsättningar i Python, följ nedanstående handledning. Det skulle snabbt introducera dig till hur Python implementerar den matematiska formen av Set.
Python Set
Pythoniska sätt att hitta skillnaden mellan två listor
Python Set verkar vara det mest uppenbara valet för att identifiera det gemensamma såväl som skillnaden mellan två listor. Så vi kommer att utforska det först och sedan kommer vi att använda nested loops och list comprehension.
Innan vi går vidare till lösningsdelen, låt oss definiera testparametrarna, dvs, de två listorna som vi ska hitta skillnaden.
# Test Inputlist_a = list_b =
Och vi vill att vår lösning ska ge följande utdata:
# Expected Result# list_out = list_a - list_blist_out =
Låt oss börja skapa ett program för att hitta skillnaden mellan två listor, först med hjälp av uppsättningar.
Använd set() för att hitta skillnaden mellan två listor
I detta tillvägagångssätt kommer vi först att härleda två SETs (låt oss säga set1 och set2) från LISTs (låt oss säga list1 och list2) genom att överlämna dem till funktionen set(). Därefter utför vi skillnaden mellan uppsättningarna. Den kommer att återge de element från lista1 som inte finns i den andra.
Här är ett exempel på Pythonprogram för att få fram skillnaden mellan två listor.
"""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 har kört detta bör du se följande resultat:
Och utan set(), med hjälp av inbäddade slingor
I den här metoden använder vi inbäddade For Loop för att jämföra varje element i den första listan med den andra. Och medan vi går igenom listan lägger vi till varje element som inte matchar till en ny (och tom) lista.
Den nya listan skulle slutligen innehålla skillnaden mellan de två givna sekvenserna. Nedan följer ett exempelprogram för att demonstrera detta tillvägagångssätt.
"""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 ovanstående program bör du se följande resultat:
Och utan set(), med hjälp av list comprehension
Det är nästan en liknande teknik som vi använde i det föregående. Här har vi ersatt de inbäddade slingorna med syntaxen list comprehension.
Se exemplet nedan.
"""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 kört ovanstående program bör du se följande resultat: