Python | Intersection of two lists
Last Updated :
23 Apr, 2023
Intersection of two list means we need to take all those elements which are common to both of the initial lists and store them into another list. Now there are various ways in Python, through which we can perform the Intersection of the lists.
Examples:
Input :
lst1 = [15, 9, 10, 56, 23, 78, 5, 4, 9]
lst2 = [9, 4, 5, 36, 47, 26, 10, 45, 87]
Output :
[9, 10, 4, 5]
Input :
lst1 = [4, 9, 1, 17, 11, 26, 28, 54, 69]
lst2 = [9, 9, 74, 21, 45, 11, 63, 28, 26]
Output :
[9, 11, 26, 28]
Method 1:
This is the simplest method where we haven’t used any built-in functions.
Python3
def intersection(lst1, lst2):
lst3 = [value for value in lst1 if value in lst2]
return lst3
lst1 = [ 4 , 9 , 1 , 17 , 11 , 26 , 28 , 54 , 69 ]
lst2 = [ 9 , 9 , 74 , 21 , 45 , 11 , 63 , 28 , 26 ]
print (intersection(lst1, lst2))
|
Output:
[9, 11, 26, 28]
Method 2:
This method includes the use of set() method.
Python3
def intersection(lst1, lst2):
return list ( set (lst1) & set (lst2))
lst1 = [ 15 , 9 , 10 , 56 , 23 , 78 , 5 , 4 , 9 ]
lst2 = [ 9 , 4 , 5 , 36 , 47 , 26 , 10 , 45 , 87 ]
print (intersection(lst1, lst2))
|
Output:
[9, 10, 4, 5]
The time complexity of the above program is O(n), where n is the length of the longer list between lst1 and lst2.
The space complexity of the program is O(n), where n is the length of the smaller list between lst1 and lst2.
Method 3:
In this method we set() the larger list and then use the built-in function called intersection() to compute the intersected list. intersection() is a first-class part of set.
Python3
def Intersection(lst1, lst2):
return set (lst1).intersection(lst2)
lst1 = [ 4 , 9 , 1 , 17 , 11 , 26 , 28 , 28 , 26 , 66 , 91 ]
lst2 = [ 9 , 9 , 74 , 21 , 45 , 11 , 63 ]
print (Intersection(lst1, lst2))
|
Output:
{9, 11}
Method 4:
By the use of this hybrid method the complexity of the program falls to O(n). This is an efficient way of doing the following program.
Python3
def intersection(lst1, lst2):
temp = set (lst2)
lst3 = [value for value in lst1 if value in temp]
return lst3
lst1 = [ 9 , 9 , 74 , 21 , 45 , 11 , 63 ]
lst2 = [ 4 , 9 , 1 , 17 , 11 , 26 , 28 , 28 , 26 , 66 , 91 ]
print (intersection(lst1, lst2))
|
Output:
[9, 9, 11]
Method 5:
This is the where the intersection is performed over sub-lists inside other lists. Here we have used the concept of filter().
Python3
def intersection(lst1, lst2):
lst3 = [ list ( filter ( lambda x: x in lst1, sublist)) for sublist in lst2]
return lst3
lst1 = [ 1 , 6 , 7 , 10 , 13 , 28 , 32 , 41 , 58 , 63 ]
lst2 = [[ 13 , 17 , 18 , 21 , 32 ], [ 7 , 11 , 13 , 14 , 28 ], [ 1 , 5 , 6 , 8 , 15 , 16 ]]
print (intersection(lst1, lst2))
|
Working: The filter part takes each sublist’s item and checks to see if it is in the source list. The list comprehension is executed for each sublist in list2.
Output:
[[13, 32], [7, 13, 28], [1, 6]]
Method 6: Using reduce():
Algorithm:
- Import the reduce function from functools module.
- Define two lists.
- Initialize the variable intersection with an empty list.
- Use the reduce function to iterate over the elements of lst1.
- Inside the lambda function, check if the current element is present in lst2 and not already present in the intersection list.
- If it is, then add the current element to the intersection list.
- Return the intersection list.
- Print the intersection list.
Python3
from functools import reduce
lst1 = [ 15 , 9 , 10 , 56 , 23 , 78 , 5 , 4 , 9 ]
lst2 = [ 9 , 4 , 5 , 36 , 47 , 26 , 10 , 45 , 87 ]
intersection = reduce ( lambda acc, x: acc + [x] if x in lst2 and x not in acc else acc, lst1, [])
print (intersection)
|
Time Complexity: O(n^2), where n is the length of lst1.
Space Complexity: O(n), where n is the length of lst1.
Please Login to comment...