# My first stumbling block with Python

Martin Franklin mfranklin1 at gatwick.westerngeco.slb.com
Thu Aug 22 16:36:44 CEST 2002

On Thursday 22 Aug 2002 1:12 pm, Mr. Neutron wrote:
> Sigh, it was too good to be true. I have come across my first problem
> with Python programming.
>
> Python does not seem to have an Array type. It has the Array object,
> which is a one dimensional array, and it works fine. However, I need a
> two dimensional array mapped (X,Y) of tuples.
>
> I can think of ways to do this in the language, by creating a list of all
> the elements, and creating a function def GetPos(X,Y) that maps into the
> list and gets the element. The math isn't too hard off the top of my head
> it is like
> 	GetPos(X,Y):
> 		return list[ (Y * RowSize) + X ]
>
> 	and SetPos(X,Y, MyTuple)
> 		list[ (Y*RowSize) + X ] = MyTuple
>
> Where RowSize is the width of the array.
>
> Now the question is, are there any easier or better ways to get a two
> dimensional array of tuples in Python
>
> Something like
>
> 		MyArray[X][Y] = (tuple)

Unless I'm being really stupid! could this be of any help:-

Python 2.2.1 (#3, May 29 2002, 20:32:44)
[GCC 2.96 20000731 (Red Hat Linux 7.1 2.96-98)] on linux2
>>> a=[[1, 1, 1, 1, 1],
...    [2, 2, 2, 2, 2],
...    [3, 3, 3, 3, 3],
...    [4, 4, 4, 4, 4]]
>>>
...
>>>
>>> a
[[1, 1, 1, 1, 1], [2, 2, 2, 2, 2], [3, 3, 3, 3, 3], [4, 4, 4, 4, 4]]
>>> a[1][1]
2
>>> a[1][1]=15
>>> a[1][1]
15
>>> a.append([5, 5, 5, 5, 5])
>>> a
[[1, 1, 1, 1, 1], [2, 15, 2, 2, 2], [3, 3, 3, 3, 3], [4, 4, 4, 4, 4], [5, 5,
5, 5, 5]]
>>> len(a[0])
5

If I am being silly then you could also take a look at the array built in
module:-

pydoc array

Python Library Documentation: module array

NAME
array

FILE

DESCRIPTION
This module defines a new object type which can efficiently represent
an array of basic values: characters, integers, floating point
numbers.  Arrays are sequence types and behave very much like lists,
except that the type of objects stored in them is constrained.  The
type is specified at object creation time by using a type code, which
<snip>

Or create your own array class.....

HTH
Martin