Сложение матриц с помощью функции sum и zip

Рейтинг: 0Ответов: 1Опубликовано: 08.05.2023

Подскажите пожалуйста где я ошибся, не могу въехать.

a = [[1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]]

b = [[9, 8, 7],
    [6, 5, 4],
    [3, 2, 1]]

x = [map(sum, zip(*i)) for i in zip(a, b)]

print(x)

Должно быть [[10,10,10],[10,10,10],[10,10,10]]

А получается [<map object at 0x0232FE08>, <map object at 0x0232FE38>, <map object at 0x0232FF28>]

Меня интересует именно этот подход, так как с использованием вложенного цикла for:

a = [[1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]]

b = [[9, 8, 7],
    [6, 5, 4],
    [3, 2, 1]]

x = [[0, 0, 0],
          [0, 0, 0],
          [0, 0, 0]]

for i in range(len(a)):
    for j in range(len(a[0])):
        x[i][j] = a[i][j] + b[i][j]
  
[print(i) for i in x]

и использованием метода понимания вложенного списка я уже разобрался:

a = [[1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]]

b = [[9, 8, 7],
    [6, 5, 4],
    [3, 2, 1]]

x = [[a[i][j] + b[i][j] for j in range(len(a[0]))] for i in range(len(a))]

[print(i) for i in x]

Ответы

▲ 1

Преобразуйте объект map в list:

x = [list(map(sum, zip(*i))) for i in zip(a, b)]