Matrices en python
Zara
yozara en terra.es
Mie Ene 30 09:45:17 CET 2008
On Wed, 30 Jan 2008 09:28:16 +0100, Zara <yozara en terra.es> wrote:
>On Tue, 29 Jan 2008 20:30:03 +0100, Arnau Sanchez <pyarnau en gmail.com>
>wrote:
>
>>Daniel García Moreno escribió:
>>
>>> Tras muchas vueltas, me he dado cuenta de que es el mismo objeto el que
>>> se pone en cada fila, y por supuesto no es eso lo que yo buscaba.
>>>
>>> Lo he solucionado creando la matriz así:
>>> matriz = [[0 for i in range(3)] for j in range(2)]
>>>
>>> Mi pregunta es:
>>> ¿Hay alguna mejor forma de crear una matriz de 0s?
>>
>>http://listas.aditel.org/faqpyes#index43h3
>>
>>Ya que estamos, ¿podemos completar create_matrix(), o dar una versión
>>alternativa (no recursiva, por ejemplo)?
>
>
>Con un pequeño cambio de sintaxis, propongo:
>
><code> def crea_matriz(forma, valor=0):
><code> val=valor
><code> if forma:
><code> formas=forma
><code> formas.reverse()
><code> for unaForma in formas:
><code> val=[val]*unaForma
><code> return val
><code>
><code> matriz = crea_matriz([2, 3, 4])
>
>La variación de sintaxis al entregar la forma como una lista en vez de
>una tupla, es para poder usar el método reverse. Otra alternativa
>darle a forma la lista de dimentsiones en orden inverso, en ese caso
>podría ser una lista o una tupla indistintamente:
>
><code> def crea_matriz2(forma, valor=0):
><code> val=valor
><code> if forma:
><code> for unaForma in forma:
><code> val=[val]*unaForma
><code> return val
><code>
><code> matriz2a = crea_matriz2((4,3,2))
><code> matriz2b = crea_matriz2([4,3,2])
>
¡Argh! Pienso las cosas, pero no lo suficiente...
La matriz creada es incorrecta, puesto que genera elementos por
referencia, no por copia.
Sigo pensando...
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es