Si të krahasoni dy lista në Python
Prezantimi
Kur programoni ose mësoni në Python, mund t'ju duhet të përcaktoni nëse dy ose më shumë lista janë të barabarta. Kur krahasoni listat për barazi, po kontrolloni nëse listat kanë të njëjtën gjatësi dhe nëse secili artikull në listë është i barabartë. Listat me gjatësi të ndryshme nuk janë kurrë të barabarta.
Ky artikull përshkruan se si të përdorni veçoritë e mëposhtme të Python për të krahasuar listat:
- Metoda
sort()
ose funksionisorted()
me operatorin==
Funksioni set()
me operatorin==
Funksionet reduce()
dhemap()
me operatorin==
Klasa collection.Counter()
me operatorin==
- të kuptuarit e listës
Përdorimi i metodës sort() ose funksioni sorted() për të krahasuar listat
Ju mund të përdorni metodën sort()
ose funksionin sorted()
për të renditur listat me qëllim krahasimin e tyre për barazi. Metoda sort()
rendit listën në vend, ndërsa funksioni sorted()
kthen një listë të re. Pas renditjes, listat që janë të barabarta do të kenë të njëjtat artikuj në të njëjtat pozicione indeksi. Operatori ==
krahason listat, artikull për artikull (krahasimi sipas elementeve).
Renditja e artikujve të listës origjinale nuk është e rëndësishme, sepse listat renditen para krahasimit.
Shënim: Mund të renditni vetëm listat me artikuj të të njëjtit lloj të dhënash.
Shembull i metodës sort().
Shembulli i mëposhtëm tregon se si të përdoret metoda sort()
për të renditur dhe krahasuar listat për barazi:
l1 = [10, 20, 30, 40, 50]
l2 = [20, 30, 50, 40, 70]
l3 = [50, 10, 30, 20, 40]
l1.sort()
l2.sort()
l3.sort()
if l1 == l2:
print ("The lists l1 and l2 are the same")
else:
print ("The lists l1 and l2 are not the same")
if l1 == l3:
print ("The lists l1 and l3 are the same")
else:
print ("The lists l1 and l3 are not the same")
Prodhimi është:
OutputThe lists l1 and l3 are the same
The lists l1 and l2 are not the same
Kodi i shembullit të mëparshëm rendit çdo listë, krahason l1
me l3
dhe printon rezultatin dhe më pas krahason l1
me l2
dhe printon rezultatin.
Sorted() Shembull Funksioni
Shembulli i mëposhtëm tregon se si përdoret funksioni sorted()
për të renditur dhe krahasuar listat për barazi:
l1 = [10, 20, 30, 40, 50]
l2 = [20, 30, 50, 40, 70]
l3 = [50, 10, 30, 20, 40]
l1_sorted = sorted(l1)
l2_sorted = sorted(l2)
l3_sorted = sorted(l3)
if l1_sorted == l2_sorted:
print ("The lists l1 and l2 are the same")
else:
print ("The lists l1 and l2 are not the same")
if l1_sorted == l3_sorted:
print ("The lists l1 and l3 are the same")
else:
print ("The lists l1 and l3 are not the same")
Prodhimi është:
OutputThe lists l1 and l3 are the same
The lists l1 and l2 are not the same
Kodi i shembullit të mëparshëm kthen një version të renditur të secilës listë, krahason l1
me l3
dhe printon rezultatin dhe më pas krahason l1
me l2
dhe printon rezultatin.
Përdorimi i funksioneve reduce() dhe map() për të krahasuar listat
Ju mund të përdorni funksionin map()
Python së bashku me funksionin functools.reduce()
për të krahasuar artikujt e të dhënave të dy listave. Kur i përdorni ato në kombinim, funksioni map()
zbaton funksionin e dhënë për çdo element dhe funksioni reduce()
siguron që ai e zbaton funksionin në mënyrë të njëpasnjëshme.
Funksioni map()
pranon një funksion dhe një iterable si argumente. Funksioni map()
zbaton funksionin e dhënë për çdo artikull të iterable-it dhe më pas kthen një objekt harte (iterator) si rezultat.
Funksioni functools.reduce()
gjithashtu pranon një funksion dhe një iterable si argumente. Funksioni functools.reduce()
zbaton funksionin e dhënë për çdo element të iterabilit në mënyrë rekursive. Fillimisht, functools.reduce()
aplikon funksionin në artikujt e parë dhe të dytë dhe kthen rezultatin, dhe më pas zbaton funksionin në rezultat dhe artikullin e tretë dhe vazhdon derisa lista të mos ketë asnjë artikull majtas.
Kur i përdorni ato në kombinim, funksioni map()
zbaton funksionin e dhënë për çdo element dhe funksioni reduce()
siguron që ai e zbaton funksionin në mënyrë të njëpasnjëshme.
Renditja e artikujve të listës është e rëndësishme kur përdorni funksionet reduce()
dhe map()
. Listat me të njëjtat artikuj në renditje të ndryshme nuk do të kthejnë true
kur krahasohen për barazi. Nëse kërkohet, së pari mund t'i renditni listat.
Shembulli i mëposhtëm tregon se si të përdorni funksionet reduce()
dhe map()
për të krahasuar listat për barazi:
import functools
l1 = [10, 20, 30, 40, 50]
l2 = [20, 30, 50, 40, 70]
l3 = [10, 20, 30, 40, 50]
if functools.reduce(lambda x, y : x and y, map(lambda p, q: p == q,l1,l2), True):
print ("The lists l1 and l2 are the same")
else:
print ("The lists l1 and l2 are not the same")
if functools.reduce(lambda x, y : x and y, map(lambda p, q: p == q,l1,l3), True):
print ("The lists l1 and l3 are the same")
else:
print ("The lists l1 and l3 are not the same")
Prodhimi është:
OutputThe lists l1 and l2 are not the same
The lists l1 and l3 are the same
Kodi i shembullit të mëparshëm krahason l1
me l2
dhe më pas krahason l1
me l3
.
Përdorimi i funksionit set() për të krahasuar listat
Ju mund të përdorni funksionin set()
për të krijuar objekte set
duke përdorur listat e dhëna dhe më pas të krahasoni grupet për barazi duke përdorur operatorin ==
.
Rendi i artikujve të listës origjinale nuk është i rëndësishëm, sepse operatori ==
kthen true
kur çdo grup përmban artikuj identikë në çfarëdo radhe.
Shënim: Artikujt e listës dublikatë shfaqen vetëm një herë në një grup.
Shembulli i mëposhtëm tregon se si të krijohen grupe nga listat dhe të krahasohen grupet për barazi:
l1 = [10, 20, 30, 40, 50]
l2 = [50, 10, 30, 20, 40]
a = set(l1)
b = set(l2)
if a == b:
print("Lists l1 and l2 are equal")
else:
print("Lists l1 and l2 are not equal")
Prodhimi është:
OutputLists l1 and l2 are equal
Kodi i shembullit të mëparshëm krijon grupe a
dhe b
nga listat l1
dhe l2
dhe më pas krahason grupet dhe printon rezultat.
Përdorimi i koleksioneve.Klasa Counter() për të krahasuar listat
Klasa collections.Counter()
mund të përdoret për të krahasuar listat. Funksioni counter()
numëron frekuencën e artikujve në një listë dhe ruan të dhënat si objekt fjalori në formatin value:frequency
. Nëse dy lista kanë të njëjtin rezultat fjalori, mund të konkludoni se listat janë të njëjta.
Renditja e artikujve të listës origjinale nuk është e rëndësishme kur përdorni klasën Counter
për të krahasuar listat.
Shembulli i mëposhtëm tregon se si të krijoni objekte Counter
nga listat e dhëna dhe t'i krahasoni ato për barazi:
import collections
l1 = [10, 20, 30, 40, 50]
l2 = [20, 30, 50, 40, 70]
l3 = [50, 20, 30, 40, 10]
if collections.Counter(l1) == collections.Counter(l2):
print ("The lists l1 and l2 are the same")
else:
print ("The lists l1 and l2 are not the same")
if collections.Counter(l1) == collections.Counter(l3):
print ("The lists l1 and l3 are the same")
else:
print ("The lists l1 and l3 are not the same")
Prodhimi është:
OutputThe lists l1 and l2 are not the same
The lists l1 and l3 are the same
Kodi i shembullit të mëparshëm krijon objekte Counter
për listat l1
dhe l2
, i krahason ato dhe printon rezultatin. Kodi përsëritet për listat l1
dhe l3
.
Përdorimi i të kuptuarit të listave për të krahasuar listat
Ju mund të përdorni të kuptuarit e listës për të krahasuar dy lista. Për më shumë informacion rreth kuptimeve të listave, referojuni Kuptimi i Kuptimeve të Listës në Python 3.
Renditja e artikujve të listës origjinale nuk është e rëndësishme kur përdorni të kuptuarit e listës për të krahasuar listat.
Shembulli i mëposhtëm tregon se si të përdoret një kuptim i listës për të krahasuar listat:
l1 = [10, 20, 30, 40, 50]
l2 = [50, 75, 30, 20, 40]
l3 = [50, 20, 30, 40, 10]
res = [x for x in l1 + l2 if x not in l1 or x not in l2]
print(res)
if not res:
print("Lists l1 and l2 are equal")
else:
print("Lists l1 and l2 are not equal")
res2 = [x for x in l1 + l3 if x not in l1 or x not in l3]
print(res2)
if not res2:
print("Lists l1 and l3 are equal")
else:
print("Lists l1 and l3 are not equal")
Kodi i shembullit të mëparshëm vendos një element treguesi x
në listat l1
dhe l2
, më pas kontrollon nëse artikulli i treguar nga elementi tregues është i pranishëm në listat. Nëse rezultati, res
është një listë boshe, atëherë mund të konkludoni se listat janë të barabarta, pasi nuk ka artikuj që shfaqen vetëm në njërën prej listave.
Prodhimi është:
Output[10, 75]
Lists l1 and l2 are not equal
konkluzioni
Ky artikull përshkruan disa mënyra të ndryshme për të krahasuar listat për barazinë në Python. Vazhdoni të mësoni me më shumë mësime Python.