# An other error on Python

• Python

## Main Question or Discussion Point

Hi all!

I'm learning programming on Python.
Currently, I'm trying to implement a recursive algorithm using a divide and conquer method to compute a product of matrices.

Yet an error occurs when I try to assign an element in a list (representing a matrix)

I can't understand where the problem comes from, since I tried on the shell to enter a matrix exactly as in the program and assign its values (C[0][0]=...) and it works.
But when I try to execute the program, the following error is raised:

line 42, in sqmat_mult_rec
C[0][0]=A[0][0]*B[0][0]
TypeError: 'int' object is not subscriptable

Any idea?

(code attached)

#### Attachments

• 1.1 KB Views: 402
Last edited:

Related Programming and Computer Science News on Phys.org
phyzguy
Why don't you try printing out A, B and C right before the error occurs? The 'not subscriptable' error usually means that you are trying to look at a subscript that doesn't exist.

I tried to and actually each of the objects I try to assign exist...

phyzguy
I'm sure they exist, but are they nested lists? When you write A[0][0], it means A must be of the form [[something]]. If A is a simple variable (which is what the message implies) or a simple list [], then you will get an error when you try to access A[0][0]. What does the print out of A and B look like?

jhae2.718
Gold Member
Code:
print(type(A))
print(type(B))
before that call to see what type is getting passed. From the error, A or B are integers.

I'm sure they exist, but are they nested lists? When you write A[0][0], it means A must be of the form [[something]]. If A is a simple variable (which is what the message implies) or a simple list [], then you will get an error when you try to access A[0][0]. What does the print out of A and B look like?
A and B are nested lists indeed.
They look like A=[[1,2,3],[2,3,4],[2,2,3]] for instance.
But what amazes me is that when I try to work with A[0][0] in the python shell, then there is absolutely no problem whereas with my program (with IDLE) an error is raised...

Code:
print(type(A))
print(type(B))
before that call to see what type is getting passed. From the error, A or B are integers.
I get type list

jhae2.718
Gold Member
Edit: Your problem is that when $n$ is 1, A and B are no longer nested lists.

Then, the subscripting fails because A[0][0] doesn't exist when e.g. A = [1]

Last edited:
Edit: Your problem is that when $n$ is 1, A and B are no longer nested lists.

Then, the subscripting fails because A[0][0] doesn't exist when e.g. A = [1]
sorry for the delay I had no internet access for a while
thank you for your help jhae2.718, it looks like this was the problem indeed!