Lista multidimensional

Arnau Sanchez arnau en ehas.org
Mie Ene 31 11:23:32 CET 2007


Buenas,

Pepe Aracil escribió:

> ¿Hay alguna forma de crear listas multidimensionales sin tener que
> recurrir a un bucle?
> 
> Esta forma engaña:
>  >>> # Creamos una lista de 10 * 10 enteros
>  >>> l=[[0]*10]*10
>  >>> l[0] is l[1]
>  >>> True

Para este tipo de cosas las listas se quedan cortas. Según lo que hagas puede 
ser extremadamente lento o engorroso trabajar con ellas.

Si no tienes inconveniente en usar módulos externos, yo lo haría con numarray ó 
numpy, tal que así (ejemplos con numarray):

In [31]:import numarray

In [34]:array = numarray.zeros((10, 10), numarray.Int32)

In [36]:array[1][2] = 5

In [37]:array
Out[37]:
array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        [0, 0, 5, 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, 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, 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, 0, 0],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])

Fíjate que luego puedes hacer algo -entre otras muchas cosas- tan interesante como:

# pon todos los valores de la fila 1 a valor 2
array[:][1] = 2

http://www.stsci.edu/resources/software_hardware/numarray

http://packages.debian.org/stable/python/python-numarray




Más información sobre la lista de distribución Python-es