The problem of finding a average values in a list is quite common. But sometimes this problem can be extended in two lists and hence becomes a modified problem. This article discusses shorthands by which this task can be performed easily. Let’s discuss certain ways in which this problem can be solved.
Method #1 : Using sum() + len() + “+” operator
The average value can be determined by the conventional sum() and len function of python and the extension of one to two lists can be dealt using the “+” operator.
Python3
# Python3 code to demonstrate # Average of two lists # using sum() + len() + "+" operator # initializing lists test_list1 = [ 1 , 3 , 4 , 5 , 2 , 6 ] test_list2 = [ 3 , 4 , 8 , 3 , 10 , 1 ] # printing the original lists print ( "The original list 1 is : " + str (test_list1)) print ( "The original list 2 is : " + str (test_list2)) # Average of two lists # using sum() + len() + "+" operator res = sum (test_list1 + test_list2) / len (test_list1 + test_list2) # printing result print ( "The Average of both lists is : " + str (res)) |
The original list 1 is : [1, 3, 4, 5, 2, 6] The original list 2 is : [3, 4, 8, 3, 10, 1] The Average of both lists is : 4.166666666666667
Time Complexity: O(n), where n is the length of the list test_list
Auxiliary Space: O(n) additional space of size n is created where n is the number of elements in the res list
Method #2 : Using sum() + len() + chain()
Another method to perform this particular task is by using the chain function which performs the task similar to the “+” operator but using an iterator, hence faster.
Python3
# Python3 code to demonstrate # Average of two lists # using sum() + len() + "+" operator from itertools import chain # initializing lists test_list1 = [ 1 , 3 , 4 , 5 , 2 , 6 ] test_list2 = [ 3 , 4 , 8 , 3 , 10 , 1 ] # printing the original lists print ( "The original list 1 is : " + str (test_list1)) print ( "The original list 2 is : " + str (test_list2)) # Average of two lists # using sum() + len() + "+" operator res = sum (chain(test_list1, test_list2)) / len ( list (chain(test_list1, test_list2))) # printing result print ( "The Average of both lists is : " + str (res)) |
The original list 1 is : [1, 3, 4, 5, 2, 6] The original list 2 is : [3, 4, 8, 3, 10, 1] The Average of both lists is : 4.166666666666667
Time Complexity: O(n)
Auxiliary Space: O(n)
Method #3 : Using extend() and mean() method of statistics module
extend() can be used to append a list into the other list and then statistics.mean() can be used to find the arithmetic mean of the new list that contains the elements from both the lists.
Python3
# Python3 code to demonstrate # Average of two lists import statistics # initializing lists test_list1 = [ 1 , 3 , 4 , 5 , 2 , 6 ] test_list2 = [ 3 , 4 , 8 , 3 , 10 , 1 ] # printing the original lists print ( "The original list 1 is : " + str (test_list1)) print ( "The original list 2 is : " + str (test_list2)) # Average of two lists x = [] x.extend(test_list1) x.extend(test_list2) res = statistics.mean(x) # printing result print ( "The Average of both lists is : " + str (res)) |
The original list 1 is : [1, 3, 4, 5, 2, 6] The original list 2 is : [3, 4, 8, 3, 10, 1] The Average of both lists is : 4.166666666666667
Time Complexity: O(n*n), where n is the number of elements in the list “test_list”.
Auxiliary Space: O(n), where n is the number of elements in the list “test_list”.
Approach 4: Using zip() and map()
Using zip() to combine the elements of the two lists
Using map() to add the elements at the same index of both lists and divide by 2
Using sum() to find the sum of the resulting list
Using len() to find the length of the resulting list
Python3
#Using zip() and map() test_list1 = [ 1 , 3 , 4 , 5 , 2 , 6 ] test_list2 = [ 3 , 4 , 8 , 3 , 10 , 1 ] #Using zip() to combine the elements of the two lists #Using map() to add the elements at the same index of both lists and divide by 2 #Using sum() to find the sum of the resulting list #Using len() to find the length of the resulting list res = sum ( map ( lambda x: (x[ 0 ] + x[ 1 ]) / 2 , zip (test_list1, test_list2))) / len (test_list1) #printing result print ( "The Average of both lists is : " + str (res)) #This code is contributed by Edula Vinay Kumar Reddy |
The Average of both lists is : 4.166666666666667
Time Complexity: O(n) where n is the length of the lists
Auxiliary Space : O(n)
Method #5: Using Functions, for loop
Python3
# function to calculate the average of two lists def average_lists(list1, list2): # check if the lengths of the lists are equal if len (list1) ! = len (list2): return None # calculate the sum of the elements of both lists sum = 0 for i in range ( len (list1)): sum + = list1[i] + list2[i] # calculate the average and return it return sum / ( 2 * len (list1)) # example usage list1 = [ 1 , 3 , 4 , 5 , 2 , 6 ] list2 = [ 3 , 4 , 8 , 3 , 10 , 1 ] average = average_lists(list1, list2) if average is not None : print ( "The Average of both lists is :" , average) else : print ( "Lists are not of equal length" ) |
The Average of both lists is : 4.166666666666667
Time Complexity: O(n) where n is the length of the lists
Auxiliary Space : O(n)