TypeError: объект 'int' не повторяется "Что я делаю не так?" - PullRequest
0 голосов
/ 08 июля 2019

Простая программа для расчета среднего числа элементов с одинаковыми индексами по заданному количеству списков и распечатки результата. Например, если -

def avg(L1, L2, L3):

    res = []

    for i in L1:
        for j in L2:
            for k in L3:
                res.append((i+j+k)/3)
                break

L1 = [1, 7, 9]
L2 = [2, 3, 8]
L3 = [4, 5, 10]


for elt in map(avg, L1, L2, L3):
    print(elt)

Вывод: TypeError: объект 'int' не может быть повторен

1 Ответ

1 голос
/ 08 июля 2019

Проблема в том, что функция avg() ожидает 3 списка из map().Но map() не работает таким образом, и вместо этого он предоставляет один элемент из каждой итерируемой, то есть int.Вы можете попробовать этот код:

def avg(*items):
    return sum(items) / len(items)

L1 = [1, 7, 9]
L2 = [2, 3, 8]
L3 = [4, 5, 10]


for elt in map(avg, L1, L2, L3):
    print(elt)

Отпечатки:

2.3333333333333335
5.0
9.0
...