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