gpt4 book ai didi

python - 类型错误:不支持的操作数类型 -: 'list' 和 'list'

转载 作者:太空宇宙 更新时间:2023-11-03 20:44:42 25 4
gpt4 key购买 nike

我正在尝试实现 Naive Gauss 并在执行时出现不支持的操作数类型错误。输出:

  execfile(filename, namespace)
File "/media/zax/MYLINUXLIVE/A0N-.py", line 26, in <module>
print Naive_Gauss([[2,3],[4,5]],[[6],[7]])
File "/media/zax/MYLINUXLIVE/A0N-.py", line 20, in Naive_Gauss
b[row] = b[row]-xmult*b[column]
TypeError: unsupported operand type(s) for -: 'list' and 'list'
>>>

这是代码

def Naive_Gauss(Array,b):
n = len(Array)

for column in xrange(n-1):
for row in xrange(column+1, n):
xmult = Array[row][column] / Array[column][column]
Array[row][column] = xmult
#print Array[row][col]
for col in xrange(0, n):
Array[row][col] = Array[row][col] - xmult*Array[column][col]
b[row] = b[row]-xmult*b[column]


print Array
print b

print Naive_Gauss([[2,3],[4,5]],[[6],[7]])

最佳答案

您无法从列表中减去列表。

>>> [3, 7] - [1, 2]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'list' and 'list'

简单的方法是使用 numpy :

>>> import numpy as np
>>> np.array([3, 7]) - np.array([1, 2])
array([2, 5])

您还可以使用列表理解,但需要更改函数中的代码:

>>> [a - b for a, b in zip([3, 7], [1, 2])]
[2, 5]
<小时/>
>>> import numpy as np
>>>
>>> def Naive_Gauss(Array,b):
... n = len(Array)
... for column in xrange(n-1):
... for row in xrange(column+1, n):
... xmult = Array[row][column] / Array[column][column]
... Array[row][column] = xmult
... #print Array[row][col]
... for col in xrange(0, n):
... Array[row][col] = Array[row][col] - xmult*Array[column][col]
... b[row] = b[row]-xmult*b[column]
... print Array
... print b
... return Array, b # <--- Without this, the function will return `None`.
...
>>> print Naive_Gauss(np.array([[2,3],[4,5]]),
... np.array([[6],[7]]))
[[ 2 3]
[-2 -1]]
[[ 6]
[-5]]
(array([[ 2, 3],
[-2, -1]]), array([[ 6],
[-5]]))

关于python - 类型错误:不支持的操作数类型 -: 'list' 和 'list',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56669032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com