Ebben a bemutatóban két pythoni módszert fedezünk fel két lista közötti különbség megtalálására. Az egyik módszer a Python Set használata. Ez először a listákat halmazzá alakítja, majd ebből szerzi ki az egyedi részt.
A többi, nem halmazos módszer elemről elemre összehasonlít két listát, és összegyűjti az egyedi részeket. Ezeket egymásba ágyazott for ciklusokkal és a listamegértéssel tudjuk megvalósítani.
Apropó, ha nem ismered a halmazokat Pythonban, akkor kövesd az alábbi bemutatót. Ez gyorsan bevezetné Önt abba, hogyan valósítja meg a Python a halmaz matematikai formáját.
Python Set
Python Ways to Find the Difference Between Two Lists
Python Set tűnik a legkézenfekvőbb választásnak két lista közös, valamint különbségének azonosítására. Ezért először ezt fogjuk megvizsgálni, majd a beágyazott ciklusokat és a lista megértését fogjuk használni.
Mielőtt rátérnénk a megoldási részre, határozzuk meg a teszt paramétereit, azaz, a két listát, amelyek különbségét meg kell találnunk.
# Test Inputlist_a = list_b =
És azt akarjuk, hogy a megoldásunk a következő kimenetet adja:
# Expected Result# list_out = list_a - list_blist_out =
Kezdjünk el egy olyan programot készíteni, amely két lista különbségét keresi, először halmazok segítségével.
Két lista különbségének megkeresésére használjuk a set() függvényt
Ebben a megközelítésben először két SET-et (mondjuk set1 és set2) fogunk levezetni a LIST-ekből (mondjuk list1 és list2) úgy, hogy átadjuk őket a set() függvénynek. Ezután elvégezzük a halmazkülönbség műveletet. Ez visszaadja azokat az elemeket a list1-ből, amelyek nem léteznek a másodikban.
Itt van a Python mintaprogram két lista különbségének kinyerésére.
"""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))
A futtatás után a következő eredményt kell látnunk:
Set() nélkül, egymásba ágyazott ciklusok használatával
Ebben a módszerben egymásba ágyazott For ciklus segítségével fogjuk összehasonlítani az első lista minden elemét a második listával. És miközben végigmegyünk rajta, minden nem egyező elemet egy új (és üres) listához csatolunk.
Az új lista végül a két adott sorozat közötti különbséget tartalmazná. Az alábbiakban egy mintaprogramot mutatjuk be ezt a megközelítést.
"""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))
A fenti program futtatása után a következő eredményt kell látnunk:
Set() nélkül, listamegértést használva
Ez szinte hasonló technika, mint amit az előzőben használtunk. Itt az egymásba ágyazott ciklusokat helyettesítettük a listamegértés szintaxisával.
Lásd az alábbi példát.
"""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))
A fenti program futtatása után a következő eredményt kell látnod: