w3resource

Python: Calculate the average of a given list, after mapping each element to a value using the provided function

Python List: Exercise - 238 with Solution

Write a Python program to calculate the average of a given list, after mapping each element to a value using the provided function.

  • Use map() to map each element to the value returned by fn.
  • Use sum() to sum all of the mapped values, divide by len(lst).
  • Omit the last argument, fn, to use the default identity function.

Sample Solution:

Python Code:

def average_by(lst, fn = lambda x: x):
  return sum(map(fn, lst), 0.0) / len(lst)

print(average_by([{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }], lambda x: x['n']))
print(average_by([{ 'n': 10 }, { 'n': 20 }, { 'n': -30 }, { 'n': 60 }], lambda x: x['n']))

Sample Output:

5.0
15.0

Flowchart:

Flowchart: Calculate the average of a given list, after mapping each element to a value using the provided function.

Visualize Python code execution:

The following tool visualize what the computer is doing step-by-step as it executes the said program:


Python Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Write a Python program to convert a given list of dictionaries into a list of values corresponding to the specified key.
Next: Write a Python program to find the value of the first element in the given list that satisfies the provided testing function.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.

Python: Tips of the Day

Creates a list of elements, grouped based on the position in the original lists:

Example:

def tips_zip(*args, fill_value=None):
  	max_length = max([len(lst) for lst in args])
 	 result = []
  	for i in range(max_length):
   	 result.append([
      args[k][i] if i < len(args[k]) else fillvalue for k in range(len(args))
   	 ])
 	 return result
print(tips_zip(['a', 'b'], [1, 2], [True, False]))
print(tips_zip(['a'], [1, 2], [True, False]))
print(tips_zip(['a'], [1, 2], [True, False], fill_value = '1'))

Output:

[['a', 1, True], ['b', 2, False]]
[['a', 1, True], [None, 2, False]]
[['a', 1, True], ['1', 2, False]]