V tomto tutoriálu objevíme dva pythonovské způsoby, jak najít rozdíl mezi dvěma seznamy. Jedním z těchto způsobů je použití množiny Pythonu. Ta nejprve převede seznamy na množiny a pak z nich získá unikátní část.
Další nenastavové metody porovnávají dva seznamy prvek po prvku a shromažďují ty unikátní. Můžeme je implementovat pomocí vnořených cyklů for a pomocí chápání seznamů.
Pokud si nejste vědomi množin v jazyce Python, pak postupujte podle níže uvedeného návodu. Rychle by vás seznámil s tím, jak Python implementuje matematickou formu množiny.
Množina v Pythonu
Pythonovské způsoby zjišťování rozdílu mezi dvěma seznamy
Množina v Pythonu se zdá být nejzřejmější volbou pro zjišťování společného i rozdílu dvou seznamů. Proto ji nejprve prozkoumáme a poté použijeme vnořené cykly a porozumění seznamu.
Než přejdeme k části řešení, definujme parametry testu, tj, dva seznamy, jejichž rozdíl máme zjistit.
# Test Inputlist_a = list_b =
A chceme, aby naše řešení poskytovalo následující výstup:
# Expected Result# list_out = list_a - list_blist_out =
Začněme vytvářet program pro zjištění rozdílu dvou seznamů, nejprve pomocí množin.
Pomocí funkce set() zjistíme rozdíl dvou seznamů
V tomto postupu nejprve odvodíme dvě SET (řekněme set1 a set2) z LIST (řekněme list1 a list2) tak, že je předáme funkci set(). Poté provedeme operaci rozdílu množin. Ta vrátí ty prvky ze seznamu1, které neexistují v druhém seznamu.
Tady je ukázka programu Python pro získání rozdílu dvou seznamů.
"""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))
Po spuštění byste měli vidět následující výsledek:
Bez funkce set(), pomocí vnořených smyček
V této metodě použijeme vnořenou smyčku For k porovnání každého prvku prvního seznamu s druhým. A při procházení budeme každý neshodný prvek připojovat do nového (a prázdného) seznamu.
Nový seznam by nakonec obsahoval rozdíl mezi oběma danými posloupnostmi. Níže je uveden ukázkový program, který tento postup demonstruje.
"""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))
Po spuštění výše uvedeného programu byste měli vidět následující výsledek:
Bez set(), s využitím chápání seznamu
Je to téměř podobná technika, jakou jsme použili v předchozím. Zde jsme vnořené smyčky nahradili syntaxí s porozuměním seznamu.
Podívejte se na následující příklad.
"""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))
Po spuštění výše uvedeného programu byste měli vidět následující výsledek: