Tässä opetusohjelmassa löydämme kaksi pythonilaista tapaa löytää kahden listan välinen ero. Toinen menetelmistä on Python Setin käyttäminen. Se muuntaa listat ensin joukoiksi ja hakee siitä sitten uniikin osan.
Muut kuin joukko-menetelmät vertaavat kahta listaa elementti elementiltä ja keräävät uniikit. Voimme toteuttaa nämä käyttämällä sisäkkäisiä for-silmukoita ja listan ymmärtämistä.
Sivumennen sanoen, jos et ole tietoinen joukoista Pythonissa, seuraa alla olevaa opetusohjelmaa. Se esittelisi sinulle nopeasti, miten Python toteuttaa joukon matemaattisen muodon.
Pythonin joukko
Pythonin tapoja löytää kahden listan ero
Pythonin joukko näyttää olevan ilmeisin valinta kahden listan yhteisen sekä eron tunnistamiseen. Tutustumme siis ensin siihen ja sen jälkeen käytämme sisäkkäisiä silmukoita ja listan ymmärtämistä.
Ennen kuin siirrymme ratkaisuosaan, määritetään testin parametrit, ts, kaksi listaa, joiden erotus meidän on löydettävä.
# Test Inputlist_a = list_b =
Ja haluamme, että ratkaisumme antaa seuraavan tulosteen:
# Expected Result# list_out = list_a - list_blist_out =
Aloitetaan luomalla ohjelma, jolla löydetään kahden listan erotus, ensin joukkojen avulla.
Käytä set()-funktiota kahden listan eron löytämiseksi
Tässä lähestymistavassa johdamme ensin kaksi SET-listaa (vaikkapa set1 ja set2) LIST-listoista (vaikkapa list1 ja list2) siirtämällä ne set()-funktiolle. Sen jälkeen suoritamme joukkojen erotusoperaation. Se palauttaa ne elementit listasta1, joita ei ole toisessa listassa.
Tässä on esimerkki Python-ohjelma, jolla saadaan kahden listan erotus.
"""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))
Suorittamisen jälkeen sinun pitäisi nähdä seuraava lopputulos:
Ilman set()-funktiota, käyttämällä sisäkkäisiä silmukoita
Tässä metodissa käytämme sisäkkäistä For-silmukkaa vertaillaksemme jokaista elementtiä ensimmäisestä listasta toiseen. Ja samalla kun käymme läpi, liitämme jokaisen yhteensopimattoman elementin uuteen (ja tyhjään) listaan.
Uusi lista sisältäisi lopulta kahden annetun sekvenssin välisen eron. Alla on esimerkkiohjelma, joka havainnollistaa tätä lähestymistapaa.
"""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))
Kun olet ajanut yllä olevan ohjelman, sinun pitäisi nähdä seuraava lopputulos:
Ei set()-ohjelmaa, käyttäen listan ymmärtämistä
Se on melkein samanlainen tekniikka, jota käytimme edellisessä ohjelmassa. Tässä korvasimme sisäkkäiset silmukat listan ymmärtämisen syntaksilla.
Katso alla oleva esimerkki.
"""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))
Kun suoritat yllä olevan ohjelman, sinun pitäisi nähdä seuraava tulos: