Estimated reading time: 3 minutes
Have you ever been faced with a situation where you have multiple lists you want to compare, and need a function that will read them in and show you what is different between them all?
In this scenario, this can be handy where you have large data sets and need a quick way to find those differences and fix them where appropriate.
Comparing two lists
Let’s look and see what is going on below.
First of all, we have defined two lists. The only difference between the two is that one has a value of six, the other does not.
Next, we have the function “comparelists”. What this is doing is taking in the two lists as parameters (a,b), and then processing them.
The lists are passed as arguments to the parameters in this line ===> comparelists(list1,list2)
The parameters a are assigned to list1, and b is assigned to list2.
The main bit of the function is the list comprehension, and it is doing the following:
- x for x is basically creating a variable x, and starting a loop that goes through all the values of b.
- Each iteration of x is stored and compared with a.
- “If x not in a” completes the comparison and if true returns the value, otherwise moves to the next value.
As a result of this logic, it can be seen that six is the only value returned, and this is what we are expecting based on a visual inspection.
#Reading in two lists
list1 = [1,2,3,4,5] # parameter a below
list2 = [1,2,3,4,5,6] # parameter b below
def comparelists(a,b):
z = [x for x in b if x not in a] #list comprehension
print(z)
comparelists(list1,list2)
Output:
[6]
Comparing more than two lists
In the logic above, we saw that two lists can be compared. But what if you want to compare one list against two other lists?
That is easily done, with some tweaking to the code.
As before the three lists are defined, created as arguments in comparelists(list1,list2,list3), and then passed to the function parameters a,b,c.
The only difference in this logic is that the list comprehension is written a little different as follows:
- x for x is basically creating a variable x, and starting a loop that goes through all the values of b. ====> This is the same as above
- Each iteration of x is stored and compared with a and c ===> This line is different as comparing to two lists now.
- “if x not in a and x not in c” ====> Here we have two comparisons
- Checking for the value x from b in a
- Checking for the value x from b in c
- The value of six is correct as it is not in either a or c.
- Note the if statement is specific as to what to check for with the “and” statement. This can be changed to suit your needs.
list1 = [1,2,3,4,5] # parameter a below
list2 = [1,2,3,4,5,6] # parameter b below
list3 = [1,2,3,7,8,9] # parameter c below
def comparelists(a,b,c):
z = [x for x in b
if x not in a and x not in c] #list comprehension
print(z)
comparelists(list1,list2,list3)
Output:
[6]