TypeError: unsupported operand type(s) for -: 'list' and 'list'
146,580
Solution 1
You can't subtract a list from a list.
>>> [3, 7] - [1, 2]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'list' and 'list'
Simple way to do it is using numpy
:
>>> import numpy as np
>>> np.array([3, 7]) - np.array([1, 2])
array([2, 5])
You can also use list comprehension, but it will require changing code in the function:
>>> [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]]))
Solution 2
Use Set in Python
>>> a = [2,4]
>>> b = [1,4,3]
>>> set(a) - set(b)
set([2])
Solution 3
The operations needed to be performed, require numpy arrays either created via
np.array()
or can be converted from list to an array via
np.stack()
As in the above mentioned case, 2 lists are inputted as operands it triggers the error.
Author by
Iliass
I try to learn something new every time I get the occasion;
Updated on November 21, 2020Comments
-
Iliass over 3 years
I am trying to implement the Naive Gauss and getting the unsupported operand type error on execution. Output:
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' >>>
This is the code
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]])