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