Start New Discussion within our Software Development Community

Ever have two lists in python and you want to know what how much of one list the other contains? This code snippet will help you do that.

"""
If you ever have two lists in python and wish to find out what percentage
one list has of another.  You could use this code to find out.
"""

li1 = [1,2,3,4,5,6,7,8]
li2 = [1,2,3,4,9]

def listPercentage(list_to_check, parent_list):
    """
    list_to_check is the list that you wish to know how many are in
    another list.  the parent_list is the list that you wish to see
    how many the other list has of. You're checking what percentage
    of the values in list_to_check are in parent_list.
    """
    global list_percentage
    
    perCounter = 0 #This counter is the key to finding out the percentage
    
    """
    This FOR loop will run through the list you want to check, in this case
    li2.  If it finds that the number is in the parent list, in our case li1,
    then it will add 1 to ther perCounter.  At the end it divides the
    perCounter by the parent list to get the percentage.
    """
    for i in list_to_check:
        if i in parent_list:
            perCounter += 1
    
    list_percentage = perCounter / float(len(parent_list))
    list_percentage = list_percentage * 100
    list_percentage = round(list_percentage)
    return list_percentage

"""
The number that gets spit out to the screen is the percentage of li1
that li2 contains.  If you run this bit of code exactly as it was
then you should get 25%, because that is how much of li1 that li2
contains.
"""

listPercentage(li2,li1)
print list_percentage

Since your function returns list_percentage, call your function this way:
list_percentage = listPercentage(li2,li1)
print list_percentage
You don't need the 'ugly global' in the function.
Interesting code otherwise!

Also, the code as is 'spits out' 50% not 25%
If you change li2 to [1,2,3,4,4,4,4,9] things get goofy!