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 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 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 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
#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
# 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)