Tässä opetusohjelmassa keskustelemme siitä, kuinka voimme saada kahden luettelon leikkauspisteen. Kahden listan leikkaus tarkoittaa, että meidän on saatava kaikki tutut elementit molempiin alkuperäisiin luetteloihin.
Python tunnetaan erinomaisesta sisäänrakennetusta tietorakenteestaan. Python-lista on yksi kuuluisimmista ja arvokkaimmista Pythonin sisäänrakennetuista tietotyypeistä. Se voi tallentaa eri tietotyyppien arvot lajiteltuun järjestykseen. Ei kuitenkaan ole sisäänrakennettua toimintoa luetteloille, kuten joukoille.
verrata javan merkkijonoihin
Python tarjoaa monia tapoja suorittaa luetteloiden leikkaus. Katsotaanpa seuraava skenaario.
Syöte:
list1 = [40, 90, 11, 58, 31, 66, 28, 54, 79] list2 = [58, 90, 54, 31, 45, 11, 66, 28, 26]
Lähtö:
[90, 11, 58, 31, 66, 28, 54]
Syöte:
list1 = [4, 9, 1, 17, 11, 26, 28, 54, 69] list2 = [9, 9, 74, 21, 45, 11, 63, 28, 26]
Lähtö:
[9, 11, 26, 28]
Katsotaanpa seuraavia menetelmiä kahden luettelon leikkauspisteen saamiseksi.
Menetelmä - 1: Silmukan käyttö
# Python program to get the intersection # of two lists in most simple way def intersection_list(list1, list2): list3 = [value for value in list1 if value in list2] return list3 # Driver Code list1 = [40, 90, 11, 58, 31, 66, 28, 54, 79] list2 = [58, 90, 54, 31, 45, 11, 66, 28, 26] print(intersection_list(list1, list2))
Lähtö:
[90, 11, 58, 31, 66, 28, 54]
Olemme käyttäneet silmukkaa saadaksemme yhteisen arvon molemmista listoista ja tallentaneet sen list3-muuttujaan.
Tapa - 2: Muunna luettelo asetukseksi
def intersection_list(list1, list2): return list(set(list1) & set(list2)) list1 = [40, 90, 11, 58, 31, 66, 28, 54, 79] list2 = [58, 90, 54, 31, 45, 11, 66, 28, 26] print(intersection_list(list1, list2))
Lähtö:
[66, 90, 11, 54, 58, 28, 31]
Menetelmä - 3:
Käytämme sisäänrakennettua sarjaa Risteys() menetelmä. The Risteys() on sarjan ensiluokkainen osa. Ymmärretään seuraava esimerkki.
Esimerkki -
tietorakenteet java
# Python program to get the intersection # of two lists using set() and intersection() def intersection_list(list1, list2): return set(list1).intersection(list2) list1 = [40, 90, 11, 58, 31, 66, 28, 54, 79] list2 = [58, 90, 54, 31, 45, 11, 66, 28, 26] print(intersection_list(list1, list2))
Lähtö:
{66, 90, 11, 54, 58, 28, 31}
Menetelmä - 4:
Tässä menetelmässä käytämme hybridimenetelmää. Tämä on erittäin tehokas tapa suorittaa tehtävä. Ymmärretään seuraava esimerkki.
Esimerkki -
# Python program to get the intersection # of two lists def intersection(list1, list2): # Use of hybrid method temp = set(list2) list3 = [value for value in list1 if value in temp] return list3 list1 = [40, 90, 11, 58, 31, 66, 28, 54, 79] list2 = [58, 90, 54, 31, 45, 11, 66, 28, 26] print(intersection(list1, list2))
Lähtö:
[90, 11, 58, 31, 66, 28, 54]
Menetelmä - 5:
Tässä menetelmässä käytämme suodattaa() menetelmä. Leikkaus suoritetaan muiden luetteloiden sisällä olevien aliluetteloiden yli. Ymmärretään seuraava esimerkki.
Esimerkki -
# Python program togetthe intersection # of two lists, sublists and use of filter() def intersection_list(list1, list2): list3 = [list(filter(lambda x: x in list1, sublist)) for sublist in list2] return list3 list1 = [10, 9, 17, 40, 23, 18, 56, 49, 58, 60] list2 = [[25, 17, 23, 40, 32], [1, 10, 13, 27, 28], [60, 55, 61, 78, 15, 76]] print(intersection_list(list1, list2))
Lähtö:
[[17, 23, 40], [10], [60]]
The suodattaa() menetelmä ottaa jokaisen aliluettelon kohteen ja tarkistaa, onko se luettelossa1. Listan ymmärtäminen suoritetaan jokaiselle listan2 aliluettelolle.