logo

Програма Python для пошуку перетину двох списків

У цьому підручнику ми обговоримо, як ми можемо отримати перетин двох списків. Перетин двох списків означає, що нам потрібно отримати всі знайомі елементи до обох початкових списків.

Python відомий своєю чудовою вбудованою структурою даних. Список Python є одним із відомих і цінних вбудованих типів даних Python. Він може зберігати значення різних типів даних у відсортованому порядку. Однак для таких списків, як набори, немає вбудованої функції.

java читає файл csv

Python надає багато способів виконання перетину списків. Розглянемо наступний сценарій.

Вхідні дані:

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

Вихід:

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

Вхідні дані:

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

Вихід:

 [9, 11, 26, 28] 

Давайте розглянемо наступні методи отримання перетину двох списків.

Спосіб - 1: Використання циклу 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)) 

Вихід:

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

Ми використали цикл for для отримання загального значення з обох списків і зберегли його у змінній list3.

Спосіб 2: Перетворення списку на набір

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

Вихід:

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

Спосіб - 3:

Ми будемо використовувати вбудовані набори перетин() метод. The перетин() є першокласною частиною набору. Давайте розберемося в наступному прикладі.

приклад -

array.sort у 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)) 

Вихід:

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

Спосіб - 4:

У цьому методі ми будемо використовувати гібридний метод. Це дуже ефективний спосіб виконання завдання. Давайте розберемося в наступному прикладі.

приклад -

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

Вихід:

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

Спосіб - 5:

У цьому методі ми будемо використовувати фільтр() метод. Перетин виконується над підсписками всередині інших списків. Давайте розберемося в наступному прикладі.

приклад -

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

Вихід:

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

The фільтр() Метод бере кожен елемент підсписку та перевіряє, чи присутній він у списку1. Розуміння списку виконується для кожного підсписку в списку2.