Python | Interlist XOR
Last Updated :
09 Apr, 2023
There can be many situations in which one requires to find index wise XOR of two different lists. This can have a possible applications in day-day programming. Lets discuss various ways in which this task can be performed.
Method #1 : Naive Method In this method, we simply run a loop and append to the new list the XOR of the both list elements at similar index till we reach end of the smaller list. This is the basic method to achieve this task.
Python3
test_list1 = [ 1 , 3 , 4 , 6 , 8 ]
test_list2 = [ 4 , 5 , 6 , 2 , 10 ]
print ("Original list 1 : " + str (test_list1))
print ("Original list 2 : " + str (test_list2))
res_list = []
for i in range ( 0 , len (test_list1)):
res_list.append(test_list1[i] ^ test_list2[i])
print ("Resultant list is : " + str (res_list))
|
Output :
Original list 1 : [1, 3, 4, 6, 8]
Original list 2 : [4, 5, 6, 2, 10]
Resultant list is : [5, 6, 2, 4, 2]
Time complexity: O(M^N) as the number of combinations generated is M choose N.
Auxiliary space: O(M^N) as the size of the resultant list is also M choose N.
Method #2 : Using List Comprehension The shorthand for the above explained technique, list comprehensions are usually quicker to type and hence must be preferred to perform these kind of programming tasks.
Python3
test_list1 = [ 1 , 3 , 4 , 6 , 8 ]
test_list2 = [ 4 , 5 , 6 , 2 , 10 ]
print ("Original list 1 : " + str (test_list1))
print ("Original list 2 : " + str (test_list2))
res_list = [test_list1[i] ^ test_list2[i] for i in range ( len (test_list1))]
print ("Resultant list is : " + str (res_list))
|
Output :
Original list 1 : [1, 3, 4, 6, 8]
Original list 2 : [4, 5, 6, 2, 10]
Resultant list is : [5, 6, 2, 4, 2]
Time complexity: O(M^N) as the number of combinations generated is M choose N.
Auxiliary space: O(M^N) as the size of the resultant list is also M choose N.
Method #4 : Using itertools.starmap()
The itertools.starmap() can be used to make this task much more compact and elegant. This method also performs the same task as above methods.
Python3
test_list1 = [ 1 , 3 , 4 , 6 , 8 ]
test_list2 = [ 4 , 5 , 6 , 2 , 10 ]
print ( "Original list 1 : " + str (test_list1))
print ( "Original list 2 : " + str (test_list2))
import itertools
res_list = list (itertools.starmap( lambda i, j : i ^ j, zip (test_list1, test_list2)))
print ( "Resultant list is : " + str (res_list))
|
Output
Original list 1 : [1, 3, 4, 6, 8]
Original list 2 : [4, 5, 6, 2, 10]
Resultant list is : [5, 6, 2, 4, 2]
Time Complexity: O(n) where n is the length of the shorter list.
Space Complexity: O(n) where n is the length of the shorter list.
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...