An other error on Python

  • Python
  • Thread starter azerty12
  • Start date
  • #1
15
0

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

Last edited:

Answers and Replies

  • #2
phyzguy
Science Advisor
4,572
1,507
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.
 
  • #3
15
0
I tried to and actually each of the objects I try to assign exist...
 
  • #4
phyzguy
Science Advisor
4,572
1,507
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?
 
  • #5
jhae2.718
Gold Member
1,161
20
Try adding
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.
 
  • #6
15
0
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...
 
  • #7
15
0
Try adding
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
 
  • #8
jhae2.718
Gold Member
1,161
20
Edit: Your problem is that when [itex]n[/itex] 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:
  • #9
15
0
Edit: Your problem is that when [itex]n[/itex] 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!
 

Related Threads on An other error on Python

  • Last Post
Replies
9
Views
3K
  • Last Post
Replies
7
Views
881
Replies
27
Views
2K
  • Last Post
Replies
3
Views
2K
Replies
2
Views
9K
Replies
4
Views
835
Replies
5
Views
4K
Replies
5
Views
896
Replies
20
Views
2K
Top