Функция для нахождения средне арифметического в списке списков
Дан 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]]
Нужно найти среднее арифметическое для каждого под_списка:
def get_average_number(week_stat): #мой код return sum(week_stat) // len(week_stat)Далее посчитать сколько раз средне арифметическое было больше в каждом под_списке соответсветнно:
def outlier_days_count(week_stat, week_avg): #мой код outlier = 0 for i in week_stat: if i > week_avg: outlier += 1 return outlierПолучение сводной информации:
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]