TypeError: невозможно умножить последовательность на не-int типа list при попытке получить произведение элементов в матрице - PullRequest
1 голос
/ 06 августа 2020

Я получаю эту ошибку, когда пытаюсь получить произведение элементов в каждой строке и столбце матрицы.

TypeError: can't multiply sequence by non-int of type 'list'

m[i][j] = m[i] * m[j] <- В этой строке я пытаюсь отнести к этой позиции, произведение умножения элементов <code>i и j в этой позиции, но я получаю эту проблему. Где я пропал?

m = []

number = int(input('Type a number for the limit of matrix:'))

for i in range(number):
    line = []
    for j in range(number):
        line.append(int(input('Type a value for[' + str(i) +','+ str(j) +']:')))
    m.append(line)
for i in range(number):
    for j in range(number):
        m[i][j] = m[i] * m[j]
for i in range(number):
    print(m[i])

1 Ответ

0 голосов
/ 06 августа 2020

Ваша ошибка в том, что обратите внимание, что m[i] - это обычный список. Мы не можем просто умножить два обычных списка вместе.

Чтобы работать только с обычным списком, мы можем получить доступ к каждому элементу, вычислить произведение и просто суммировать их.

m = []

number = int(input('Type a number for the limit of matrix:'))

for i in range(number):
    line = []
    for j in range(number):
        line.append(int(input('Type a value for[' + str(i) +','+ str(j) +']:')))
    m.append(line)
m2 = [[0]* number for i in range(number)]
for i in range(number):
    for j in range(number):
        m2[i][j] = sum(m[i][k] * m[k][j] for k in range(number))
for i in range(number):
    print(m2[i])

В качестве альтернативы, вы можете использовать более продвинутые инструменты, такие как numpy array.

import numpy as np
m = []

number = int(input('Type a number for the limit of matrix:'))

for i in range(number):
    line = []
    for j in range(number):
        line.append(int(input('Type a value for[' + str(i) +','+ str(j) +']:')))
    m.append(line)
m = np.array(m)
print(np.dot(m, m))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...