Ebben az oktatóanyagban megvitatjuk, hogyan kaphatjuk meg a két lista metszéspontját. A két lista metszéspontja azt jelenti, hogy az összes ismert elemet mindkét kezdeti listához el kell juttatnunk.
Piton kiváló beépített adatstruktúrájáról ismert. A Python lista a Python egyik híres és értékes beépített adattípusa. Rendezett sorrendben tudja tárolni a különböző adattípusú értékeket. A listákhoz, például a készletekhez azonban nincs beépített funkció.
feladatkezelő Linuxhoz
A Python számos módot kínál a listák metszéspontjainak végrehajtására. Lássuk a következő forgatókönyvet.
Bemenet:
list1 = [40, 90, 11, 58, 31, 66, 28, 54, 79] list2 = [58, 90, 54, 31, 45, 11, 66, 28, 26]
Kimenet:
[90, 11, 58, 31, 66, 28, 54]
Bemenet:
list1 = [4, 9, 1, 17, 11, 26, 28, 54, 69] list2 = [9, 9, 74, 21, 45, 11, 63, 28, 26]
Kimenet:
[9, 11, 26, 28]
Lássuk a következő módszereket két lista metszéspontjának meghatározásához.
Módszer - 1: A for ciklus használata
# 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))
Kimenet:
[90, 11, 58, 31, 66, 28, 54]
A ciklust arra használtuk, hogy mindkét listából megkapjuk a közös értéket, és a list3 változóban tároljuk.
2. módszer: Konvertálja a listát készletre
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))
Kimenet:
[66, 90, 11, 54, 58, 28, 31]
3. módszer:
A beépített készletet fogjuk használni útkereszteződés() módszer. A útkereszteződés() a készlet első osztályú része. Értsük meg a következő példát.
Példa -
ha más utasítást a java-ban
# 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))
Kimenet:
{66, 90, 11, 54, 58, 28, 31}
4. módszer:
Ebben a módszerben a hibrid módszert fogjuk használni. Ez nagyon hatékony módja a feladat végrehajtásának. Értsük meg a következő példát.
Példa -
# 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))
Kimenet:
[90, 11, 58, 31, 66, 28, 54]
5. módszer:
Ebben a módszerben a szűrő() módszer. A metszéspont más listákon belüli allisták felett történik. Értsük meg a következő példát.
Példa -
# 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))
Kimenet:
[[17, 23, 40], [10], [60]]
A szűrő() metódus veszi az allista minden elemét, és ellenőrzi, hogy jelen van-e a list1-ben. A listaértelmezés a list2 minden egyes allistájára végrehajtódik.