Šioje pamokoje aptarsime, kaip galime gauti dviejų sąrašų sankirtą. Dviejų sąrašų sankirta reiškia, kad visi žinomi elementai turi būti įtraukti į abu pradinius sąrašus.
Python yra žinomas dėl puikios integruotos duomenų struktūros. Python sąrašas yra vienas garsiausių ir vertingiausių integruotų Python duomenų tipų. Jis gali saugoti įvairių duomenų tipų vertes surūšiuota tvarka. Tačiau sąrašams, pavyzdžiui, rinkiniams, nėra integruotos funkcijos.
data į eilutę
Python pateikia daugybę būdų, kaip atlikti sąrašų sankirtą. Pažiūrėkime toliau pateiktą scenarijų.
Įvestis:
list1 = [40, 90, 11, 58, 31, 66, 28, 54, 79] list2 = [58, 90, 54, 31, 45, 11, 66, 28, 26]
Išvestis:
[90, 11, 58, 31, 66, 28, 54]
Įvestis:
list1 = [4, 9, 1, 17, 11, 26, 28, 54, 69] list2 = [9, 9, 74, 21, 45, 11, 63, 28, 26]
Išvestis:
[9, 11, 26, 28]
Pažiūrėkime šiuos metodus, kaip gauti dviejų sąrašų sankirtą.
Metodas – 1: Naudojame ciklei
# 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))
Išvestis:
[90, 11, 58, 31, 66, 28, 54]
Mes panaudojome for loop, kad gautume bendrą reikšmę iš abiejų sąrašų ir išsaugome ją list3 kintamajame.
2 būdas: konvertuokite sąrašą į rinkinį
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))
Išvestis:
[66, 90, 11, 54, 58, 28, 31]
3 metodas:
Naudosime įmontuotą rinkinį sankryža () metodas. The sankryža () yra pirmos klasės komplekto dalis. Supraskime šį pavyzdį.
Pavyzdys -
panaši eilutė 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))
Išvestis:
{66, 90, 11, 54, 58, 28, 31}
4 metodas:
Šiuo metodu naudosime hibridinį metodą. Tai labai efektyvus būdas atlikti užduotį. Supraskime šį pavyzdį.
Pavyzdys -
# 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))
Išvestis:
[90, 11, 58, 31, 66, 28, 54]
5 metodas:
Šiuo metodu naudosime filtras() metodas. Sankryža atliekama per antrinius sąrašus kituose sąrašuose. Supraskime šį pavyzdį.
Pavyzdys -
# 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))
Išvestis:
[[17, 23, 40], [10], [60]]
The filtras() metodas paima kiekvieną posąrašo elementą ir patikrina, ar jis yra sąraše1. Sąrašo supratimas vykdomas kiekvienam sąrašo2 subsąrašui.