[Python-es] Matrices

Fernando Guarini fernandoenzo en gmail.com
Jue Feb 17 01:38:22 CET 2011


Vale, a ver, al final he logrado lo que me proponía usando este código:

M = [ [1, 4, 0], [1, 1561561, 0], [0, 0, 18198191], [1,1,1] ]
for x in M:
    print "(",
    for y in range(len(x)):
        if y == 0:
            print x[y],
        else:
            print "%13d" %(x[y]),
    print ")"

Gracias a todos los que me habeis respondido. Pero aún me queda una duda. Si
os fijais en mi código y lo probais, vereis que he puesto un 13 de espacio,
para que se vea todo perfectamente encuadrado. Sin embargo, necesito que ese
13 sea "flexible" para que en función del número de caracteres que tenga el
mayor de los números de la matriz, ese 13 se convierta en un 20 o en un 200
si es necesario.

¿A alguno se le ocurre cómo podría hacerse?

Salu2

El 17 de febrero de 2011 00:43, Francisco Palm
<francisco.palm en gmail.com>escribió:

> M = [ [1, 0, 0], [0, 1561561, 0], [0, 0, 1] ]
>
> for i in M:
>    print('[',end=' ')
>    for j in i[:-1]:
>        print('{:^10}'.format(j),end=',')
>    print('{:^10} ]'.format(i[-1]),end='\n')
> print('')
> for i in M:
>    print('[',end=' ')
>    for j in i[:-1]:
>        print('{:>10}'.format(j),end=',')
>    print('{:^10}]'.format(i[-1]),end=' \n')
> print('')
> for i in M:
>    print('[',end=' ')
>    for j in i[:-1]:
>        print('{:<10}'.format(j),end=',')
>    print('{:^10} ]'.format(i[-1]),end='\n')
>
> En Python 3 produce:
>
> >>>
> [     1     ,    0     ,    0      ]
> [     0     , 1561561  ,    0      ]
> [     0     ,    0     ,    1      ]
>
> [          1,         0,    0     ]
> [          0,   1561561,    0     ]
> [          0,         0,    1     ]
>
> [ 1         ,0         ,    0      ]
> [ 0         ,1561561   ,    0      ]
> [ 0         ,0         ,    1      ]
>
> Con una fuente de ancho fijo queda perfectamente alineado.
>
> 2011/2/16 Fernando Guarini <fernandoenzo en gmail.com>:
> > Hola a todos.
> > Vereis, estoy creando un programita en Python que pretendo que trabaje
> con
> > matrices. Para ello, he decidido anidar listas, ya que he buscado mucho
> en
> > Google y parece ser la mejor opción.
> > Y el invento no funciona mal en absoluto, pero me gustaría que
> gráficamente
> > se viese "bonito". El código que he implementado es el siguiente:
> > M = [ [1, 0, 0], [0, 1561561, 0], [0, 0, 1] ]
> > for i in range(0, len(M)):
> >     print M[i]
> > Y la salida es:
> > [1, 0, 0]
> > [0, 1561561, 0]
> > [0, 0, 1]
> > Lo único que deseo es que la salida se vea del siguiente modo:
> > [1,      0,      0]
> > [0, 1561561, 0]
> > [0,      0,      1]
> > Es decir, que se vea como una Matriz de verdad. No pido nada más.
> > Ojalá alguno sepa ayudarme.
> > Salu2 y muchas gracias!
> > _______________________________________________
> > Python-es mailing list
> > Python-es en python.org
> > http://mail.python.org/mailman/listinfo/python-es
> > FAQ: http://python-es-faq.wikidot.com/
> >
> >
>
>
>
> --
> --------------------------------------
> fpalm en ula.ve
> francisco.palm en gmail.com
>
> cel: +58 +426 5721730
> tel: +58 +274 6352001
>
> ----
> Debemos ser libres, no para hacer lo que nos plazca, sino libres para
> comprender muy profundamente nuestros propios instintos e impulsos. K
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20110217/8aa288e9/attachment.html>


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