În acest tutorial, vom descoperi două moduri pythonice de a găsi diferența dintre două liste. Una dintre metode este utilizarea setului Python. Aceasta convertește mai întâi listele în seturi și apoi obține partea unică din acestea.
Alte metode care nu sunt seturi compară două liste element cu element și le colectează pe cele unice. Le putem implementa folosind bucle for imbricate și cu ajutorul înțelegerii listelor.
Apropoi, dacă nu cunoașteți seturile în Python, urmați tutorialul de mai jos. Acesta vă va introduce rapid în modul în care Python implementează forma matematică a setului.
Python Set
Modalități pythonice de a găsi diferența dintre două liste
Python Set pare a fi cea mai evidentă alegere pentru a identifica atât punctele comune, cât și diferența dintre două liste. Așadar, o vom explora mai întâi, iar apoi vom folosi buclele imbricate și înțelegerea listelor.
Înainte de a trece la partea de rezolvare, să definim parametrii testului, și anume:, cele două liste pe care trebuie să găsim diferența.
# Test Inputlist_a = list_b =
Și dorim ca soluția noastră să furnizeze următoarea ieșire:
# Expected Result# list_out = list_a - list_blist_out =
Să începem să creăm un program pentru a găsi diferența dintre două liste, mai întâi folosind seturi.
Utilizați set() pentru a găsi diferența dintre două liste
În această abordare, vom obține mai întâi două SET-uri (să zicem set1 și set2) din LIST-uri (să zicem list1 și list2), trecându-le funcției set(). După aceea, vom efectua operația de diferențiere a seturilor. Aceasta va returna acele elemente din lista1 care nu există în cea de-a doua.
Iată un exemplu de program Python pentru a obține diferența a două liste.
"""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))
După rularea acestuia, ar trebui să vedeți următorul rezultat:
Fără set(), folosind bucle imbricate
În această metodă, vom folosi bucla For imbricate pentru a compara fiecare element din prima listă cu cea de-a doua. Iar în timpul parcurgerii, vom adăuga fiecare element care nu se potrivește la o listă nouă (și goală).
Noua listă va include în final diferența dintre cele două secvențe date. Mai jos este exemplul de program pentru a demonstra această abordare.
"""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))
După rularea programului de mai sus, ar trebui să vedeți următorul rezultat:
Fără set(), folosind înțelegerea listelor
Este o tehnică aproape similară cu cea pe care am folosit-o în cea anterioară. Aici, am înlocuit buclele imbricate cu sintaxa de înțelegere a listei.
Vezi exemplul de mai jos.
"""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))
După rularea programului de mai sus, ar trebui să vedeți următorul rezultat:
.