поиск общего среднего списка списков python - PullRequest
0 голосов
/ 18 марта 2020

Я новичок в python, и мне нужна помощь в поиске средних, дисперсий и общего среднего в списке списков. У меня есть список списков, подобных этому:

allgroups = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]

, и я могу найти средние значения и отклонения, но для общего среднего у меня есть проблема, чтобы найти решение: вот мой код:

def avg(allgroups):
    return [float(sum(i)) / len(i) for i in allgroups]


def variance(allgroups):
    return [sum((x - sum(group) / len(group)) ** 2 for x in group) / (
                len(group) - 1) for group in allgroups]


def calcavg(allgroups):
    return float(sum(avg(allgroups) / len(avg(allgroups))))

TheAvg = avg(allgroups)
print(TheAvg)
Variance = variance(allgroups)
print(Variance)
calcAvg = calcavg(allgroups)
print(calcAvg)

Я получаю сообщение об ошибке на экране:

return float(sum(avg(allgroups) / len(avg(allgroups))))

TypeError: unsupported operand type(s) for /: 'list' and 'int'

Когда я делаю код:

average= sum(TheAvg)/len(TheAvg)

Я могу найти среднее значение, но когда я делаю

def calcavg(allgroups):
    return float(sum(avg(allgroups) / len(avg(allgroups))))

Я получаю сообщение об ошибке. Буду благодарен за любую помощь. P / S: я не могу использовать любую библиотеку для этой проблемы, такую ​​как numpy или statisti c.

1 Ответ

1 голос
/ 18 марта 2020

У вас есть опечатка в функции calcavg. Вы неправильно ввели оператор sum с левой стороны. Функция должна быть такой, как показано ниже:

def calcavg(allgroups):
    return float(sum(avg(allgroups)) / len(avg(allgroups)))

calcavg(allgroups)

>> 6.5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...