简体   繁体   English

TypeError:尝试获取矩阵中元素的乘积时,无法将序列乘以“列表”类型的非整数

[英]TypeError: can't multiply sequence by non-int of type 'list' when trying to get product of elements in matrix

I getting this error when I trying to get the product of the elements in each line and column of matrix.当我尝试获取矩阵每行和每列中元素的乘积时出现此错误。

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

m[i][j] = m[i] * m[j] <- In this line I try to attribute to this position, the product of the multiplication of elements of i and j in that position,but I getting this problem. m[i][j] = m[i] * m[j] <- 在这一行中,我尝试将其归因于此 position,即 position 中ij元素相乘的乘积,但我遇到了这个问题. Where am I missing?我在哪里失踪?

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])

Your mistake is that note that m[i] is a list of regular list.您的错误是请注意m[i]是常规列表的列表。 We can't just multiply two regular list together.我们不能只是将两个常规列表相乘。

To work with just regular list, we can access each element, compute the product and just sum them up.只使用常规列表,我们可以访问每个元素,计算产品并总结它们。

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])

Alternatively, you might like to use more advanced tools such as numpy array.或者,您可能希望使用更高级的工具,例如 numpy 阵列。

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))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM