logo

Pythonský program pro nalezení průniku dvou seznamů

V tomto tutoriálu probereme, jak můžeme získat průnik těchto dvou seznamů. Průnik dvou seznamů znamená, že potřebujeme dostat všechny známé prvky do obou počátečních seznamů.

Krajta je známý pro svou vynikající vestavěnou datovou strukturu. Seznam Python je jedním ze slavných a cenných vestavěných datových typů Pythonu. Může ukládat různé hodnoty datových typů v seřazeném pořadí. Pro seznamy, jako jsou množiny, však neexistuje žádná vestavěná funkce.

strint do int

Python poskytuje mnoho způsobů, jak provést průnik seznamů. Podívejme se na následující scénář.

Vstup :

 list1 = [40, 90, 11, 58, 31, 66, 28, 54, 79] list2 = [58, 90, 54, 31, 45, 11, 66, 28, 26] 

Výstup:

 [90, 11, 58, 31, 66, 28, 54] 

Vstup :

 list1 = [4, 9, 1, 17, 11, 26, 28, 54, 69] list2 = [9, 9, 74, 21, 45, 11, 63, 28, 26] 

Výstup:

 [9, 11, 26, 28] 

Podívejme se na následující metody, jak získat průnik dvou seznamů.

Metoda - 1: Použití smyčky 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)) 

Výstup:

 [90, 11, 58, 31, 66, 28, 54] 

Pro získání společné hodnoty z obou seznamů jsme použili cyklus for a uložili jsme ji do proměnné list3.

Metoda - 2: Převést seznam na sadu

 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)) 

Výstup:

 [66, 90, 11, 54, 58, 28, 31] 

Metoda - 3:

Použijeme vestavěné sady průsečík() metoda. The průsečík() je prvotřídní součástí sady. Pojďme pochopit následující příklad.

Příklad -

Sloučit třídění
 # 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)) 

Výstup:

 {66, 90, 11, 54, 58, 28, 31} 

Metoda - 4:

V této metodě použijeme hybridní metodu. To je velmi efektivní způsob, jak provést úkol. Pojďme pochopit následující příklad.

Příklad -

 # 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)) 

Výstup:

 [90, 11, 58, 31, 66, 28, 54] 

Metoda - 5:

V této metodě použijeme filtr() metoda. Průnik se provádí přes podseznamy uvnitř jiných seznamů. Pojďme pochopit následující příklad.

Příklad -

 # 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)) 

Výstup:

 [[17, 23, 40], [10], [60]] 

The filtr() metoda vezme každou položku podseznamu a zkontroluje, zda je přítomna v seznamu1. Porozumění seznamu se provádí pro každý dílčí seznam v seznamu2.