În acest tutorial, vom discuta despre cum putem obține intersecția celor două liste. Intersecția a două liste înseamnă că trebuie să aducem toate elementele familiare la ambele liste inițiale.
Piton este cunoscut pentru structura sa excelentă de date încorporată. Lista Python este unul dintre celebrele și valoroasele tipuri de date încorporate din Python. Poate stoca valorile diferitelor tipuri de date în ordine sortată. Cu toate acestea, nu există nicio funcție încorporată pentru liste precum seturile.
directorul din comenzile Linux
Python oferă multe modalități de a efectua intersecția listelor. Să vedem următorul scenariu.
Intrare :
list1 = [40, 90, 11, 58, 31, 66, 28, 54, 79] list2 = [58, 90, 54, 31, 45, 11, 66, 28, 26]
Ieșire:
[90, 11, 58, 31, 66, 28, 54]
Intrare :
list1 = [4, 9, 1, 17, 11, 26, 28, 54, 69] list2 = [9, 9, 74, 21, 45, 11, 63, 28, 26]
Ieșire:
[9, 11, 26, 28]
Să vedem următoarele metode pentru a obține intersecția a două liste.
Metoda - 1: Folosind bucla for
# 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))
Ieșire:
[90, 11, 58, 31, 66, 28, 54]
Am folosit for loop pentru a obține valoarea comună din ambele liste și am stocat-o în variabila list3.
Metoda - 2: Convertiți lista în set
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))
Ieșire:
[66, 90, 11, 54, 58, 28, 31]
Metoda - 3:
Vom folosi setul încorporat intersecție() metodă. The intersecție() este o parte de primă clasă a setului. Să înțelegem următorul exemplu.
Exemplu -
Anomalie de segmentare (core-dumping
# 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))
Ieșire:
{66, 90, 11, 54, 58, 28, 31}
Metoda - 4:
În această metodă, vom folosi metoda hibridă. Acesta este un mod mult eficient de a îndeplini sarcina. Să înțelegem următorul exemplu.
Exemplu -
# 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))
Ieșire:
[90, 11, 58, 31, 66, 28, 54]
Metoda - 5:
În această metodă, vom folosi filtru() metodă. Intersecția se realizează peste sub-liste din interiorul altor liste. Să înțelegem următorul exemplu.
Exemplu -
# 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))
Ieșire:
[[17, 23, 40], [10], [60]]
The filtru() metoda preia fiecare articol din sublistă și verifică dacă este prezent în list1. Înțelegerea listei este executată pentru fiecare sublistă din listă2.