Функция для нахождения средне арифметического в списке списков

Дан cписок списков:

complaint_stat = [
              [27, 22, 15, 8, 3, 16, 15],
              [12, 4, 10, 13, 29, 22, 121],
              [5, 7, 6, 13, 2, 1, 25],
              [15, 6, 14, 19, 25, 7, 3]]
  1. Нужно найти среднее арифметическое для каждого под_списка:

    def get_average_number(week_stat):
    
    #мой код
     return sum(week_stat) // len(week_stat)
    
  2. Далее посчитать сколько раз средне арифметическое было больше в каждом под_списке соответсветнно:

    def outlier_days_count(week_stat, week_avg):
    
    #мой код
     outlier = 0  
     for i in week_stat: 
         if i > week_avg:       
             outlier += 1      
     return outlier 
    
  3. Получение сводной информации:

    def get_complaint_info(complaint_stat):
    
    #мой код
         over_avg = outlier_days_count(complaint_stat,get_average_number(complaint_stat))
    for i in complaint_stat: 
     print(i, 'среднее =', get_average_number(i) , ' больше среднего : ', over_avg) 
    
    
    # На выходе должны получить
    [27, 22, 15, 8, 3, 16, 15]: среднее = 15,  больших среднего: 3
    [12, 4, 10, 13, 29, 22, 121]: среднее = 30, больших среднего: 1
    [5, 7, 6, 13, 2, 1, 25]: среднее = 8, больших среднего: 2
    [15, 6, 14, 19, 25, 7, 3]: среднее = 12,  больших среднего: 4
    

Это задание из практики, надеюсь передал понятно. Спасибо


Ответы (1 шт):

Автор решения: Zhihar

где добавляете результат в массив забыли отступ - в итоге он выполняется вне цикла, т.е. 1 раз

def func(data):
    res = []
    for obj in data:
        value = sum(obj) / len(obj)
        res.append(value) # вот тут был забыт отступ
    return res

а вообще вы бы могли список и сразу собрать

def func(data):
    return [sum(obj) / len(obj) for obj in data]

но по хорошему надо бы еще обработать ситуацию, когда список значений пустой

def func(data):
    return [(sum(obj) / len(obj)) if len(obj) > 0 else 0 for obj in data]
→ Ссылка