[Tutor] Two dimensional lists

Mark Lawrence breamoreboy at gmail.com
Mon Nov 2 01:58:03 EST 2020


On 02/11/2020 06:25, Phil wrote:
> On 2/11/20 2:46 pm, Cameron Simpson wrote:
> 
> Thank you Cameron for your insightful reply.
> 
> For the syntax you show above, the direct Python equivalent is a 5
>> element list, each element of which is a 5 element list.
>>
>> So:
>>
>>      b = [
>>            [ 0, 0, 0, 0, 0 ],
>>            [ 0, 0, 0, 0, 0 ],
>>            [ 0, 0, 0, 0, 0 ],
>>            [ 0, 0, 0, 0, 0 ],
>>            [ 0, 0, 0, 0, 0 ],
>>          ]
>>
>> The syntax you use "b[3][2]" fetches element 3 (the fourth element,
>> since lists count from 0), and then fetches element 2 from _that_. So
>> the third element of the fourth list.
> 
> That's what I expected as well, however, this is the result;
> 
>  >>>
>  >>> b = [5],[5]
>  >>> b[3][2] = 9
> Traceback (most recent call last):
>    File "<stdin>", line 1, in <module>
> IndexError: tuple index out of range
>  >>> print(b[3][2])
> Traceback (most recent call last):
>    File "<stdin>", line 1, in <module>
> IndexError: tuple index out of range

You might like to try things with the interactive interpreter.

 >>> b = [5],[5]
 >>> type(b)
<class 'tuple'>
 >>> b
([5], [5])
 >>> b[0]
[5]
 >>> b[1]
[5]
 >>> b[2]
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
IndexError: tuple index out of range
 >>> b[0][1]
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
IndexError: list index out of range

So you have a tuple of two lists each of which contains one element. The 
fact that a comma creates a tuple catches a lot of people :)

> 
> I'd spent the last 3 or 4 hours experimenting with this but have not 
> achieved anything useful. I also had a play with the array module and I 
> had another look at numpy and have decided that's the way to go.
> 
> Still, I'm a little disappointed that this has defeated me.
> 

-- 
My fellow Pythonistas, ask not what our language can do for you, ask
what you can do for our language.

Mark Lawrence



More information about the Tutor mailing list