top of page

Matrices usando listas 

#Inicializar matriz en 0


No_Filas=3
No_Columnas = 3
Matriz=[
None]*No_Filas                              #se Crean las filas
for i in range( No_Columnas ):
    Matriz[i]=[0]*No_Columnas                    
#se crean las columnas y se inicializa en 0

#Inicializar matriz en 0 (forma compacta)


No_Filas = 3                                               #Puede ser cualquier número mayor que 0
No_Columnas = 3                                      #Puede ser cualquier número mayor que 0
Matriz=[[0]*No_Columnas for i in range (No_Filas)]    #se crean las filas  columnas y se inicializa en 0

Tercera forma : versión Compacta

No_Filas=3                                        #Puede ser cualquier número mayor que 0
No_Columnas=3                               #Puede ser cualquier número mayor que 0


Matriz=[[None]*No_Columnas for i in range (No_Filas)]
 

Segunda forma:  Usando solo un ciclo

No_Filas = 3                                      #Puede ser cualquier número mayor que 0

No_Columnas = 3                             #Puede ser cualquier número mayor que 0

 

Matriz=[ ]                                           #Se crea inicialmente una lista vacía

 
Matriz=[None]*No_Filas                    #Aquí se crean las "filas"
for i in range (No_Columnas):           #se crean las "columnas"
     Matriz[j] = [None]*No_Columnas  #sea crean las "columnas" para la fila 

No_Filas = 3                                     #Puede ser cualquier número mayor que 0

No_Columnas = 3                            #Puede ser cualquier número mayor que 0

 

Matriz=[ ]                                           # Se crea inicialmente una lista vacía

for i in range (No_Filas):                   #Se crean las "filas"

     Matriz.append([ ])                        #se concatenan dentro de la lista tantos espacios como filas

     for j in range(No_Columnas):      #se crean las "columnas"

         Matriz[i].append(None)           #Para cada fila se crean las columnas (tantas como sea No_Columnas)

Crear matrices usando listas consiste básicamente en crear una lista, que en cada posición tiene otra lista, la posición de la lista que contiene otra lista equivale a las filas y la lista interna equivale a las columnas.

Existen varias formas de crear una matriz, veamos las mas utilizadas, desde la mas larga e intuitiva hasta la forma mas compacta.

1.Crear una matriz vacía:Se supone que se necesitan almacenar datos de forma matricial, pero inicialmente dichos datos no se conocen (podrían ser  resultado de alguna operación o método), por esta razón necesitamos crear una matriz que está inicialmente vacía para posteriormente almacenar dichos datos.

 

Primera forma: Versión simple de recordar usando 2 ciclos

Veamos un ejemplo:

#En este ejemplo se creará una matriz y se llenará con números aleatorios del 0 al 10

import random as rd # con esta librería se pueden obtener números aleatorios de diferentes formas

No_Filas=3

No_Columnas=3  

Matriz=[[0]*No_Columnas for i in range (No_Filas)]

#Necesitamos usar 2 ciclos si queremos tener control sobre la posición de cada elemento 

#El ciclo interno controla las columnas y el externo las filas

for i in range(No_Filas):

            for j in rangee (No_Columnas):

                        Matriz[i][j]=rd.randint(0,10)

Se debe tener en cuenta que estos dos métodos de inicialización sólo permiten que todos los valores de inicio de la matriz sean el mismo o a lo más que cada n-tupla tenga el mismo valor( es decir el mismo valor por fila),pero es bastante útil cuando se quiere el mismo valor inicial.

3.Manipular datos de una matriz

-¿Que pasa si debo darle a mi matriz valores iniciales que son resultado de una operación o necesito modificarla luego de crearla?

-¿Como puedo acceder a cada valor?

Podemos obtener un valor que esté en algún “punto”

de una matriz usando la siguiente sentencia:

 

                             V = Matriz[i][j]

Esta sentencia le asigna a V lo que tenga La matriz en la fila i columna j.

Por ejemplo si i=0 y j=0 entonces a V se le asignaría el valor de 5

 

Se puede modificar  un elemento de la matriz usando una expresión similar,veamos:

 

                           Matriz[i][j]=valor_cualquiera

2.Inicializar una matriz: Suponemos ahora que por alguna razón queremos crear nuestra matriz con algún valor inicial, por ejemplo, que cuando esta se cree los elementos en cada posición sean 0 (o cualquier otro valor)

Veamos un ejemplo de como hacer esto:

No está de más recordar que cuando importamos una librería podemos renombrarla para usarla de una forma más cómoda.Para eso se usa "as”, que en este caso deja, que cada que vayamos a usar un método de la librería random, se pueda llamar como rd

Como dato adicional, es posible tomar una fila i de la matriz como una lista y almacenarse por aparte en otra variable, veamos cómo:

 

             Lista=Matriz[i]  # Esta expresión toma todos los datos en una fila i de la matriz y se los asigna a lista

Esto puede ser muy útil en el caso de que los datos deban por ejemplo promediarse por fila, debido a que los datos de cada fila representan muestras tomadas en diferentes días(cada fila tendrá los datos de un día en particular)

De esta forma podemos copiar los datos de una matriz a otra, siempre y cuando tengan las mismas dimensiones(al menos para el número de columnas)

 

             M2[k]=Matriz[i]  #  Asigna a la fila k de M2 lo que halla en la fila i de Matriz

4. Imprimir en formato matricial.

Luego de ejecutar el programa, realizar todas las operaciones y modificaciones necesarias queremos imprimir en pantallas los datos obtenidos en forma matricial.

Un problema de trabajar con matrices creadas a partir de listas es que cuando usamos la instrucción print (Matriz) la salida que nos arroja en pantalla tiene la siguiente forma:

 

            print (Matriz)

                    >>[[A1,A2..An] , [B1,B2...Bn] , [C1,C2...Cn]...]

Sí estamos trabajando con “matrices”, la idea será mostrar los resultados de forma matricial y no como una cadena donde no es muy claro el resultado, además ,si la matriz es muy grande, el desorden será mayor.

La forma larga de lograr este formato de impresión  “jugar” con ciclos y la función print ().

Veamos un ejemplo:

#Imprimir en formato matricial

import random as rd  #Librería para generar números aleatorios

No_Filas=3

No_Columnas=3  

Matriz = [[0]*No_Columnas for i in range( (No_Filas)]  # Creación e inicialización de la matriz

 

for i in range (No_Filas) :
    
  
 print ("|",end="") # Se usa la barra como parte del formato(Barra al inicio de la fila)
    for j in range (No_Columnas):


        Matriz[i][j] = rd.randint(0,10) # se llena la matriz con números aleatorios
        print (str(Matriz [i][j] ).rjust(3),"|", end="")  # Se imprime,SIN SALTO DE LÍNEA


    print ("")  # Se coloca la barra al final de la fila y se introduce salto de línea

Se imprime algo así:

>>|  10|   5|   4 |

    |    5|   3|   1 |

    |    9| 10|   4 |

Hagamos algunas claridades en lo que se hizo en este código.

1.La función print luego de imprimir en pantalla todos las variables y/o caracteres que se entreguen como argumento imprime un salto de linea por defecto, pero no se desea un salto de línea después de cada carácter si no después de cada fila. Para eliminar el salto de línea por defecto de la función print() simplemente se coloca end=” ” como argumento final del print.

 

La instrucción "rjust(ancho,caracter_de_relleno)" se usa para una dar formato a la impresión, y lo que hace es alinear los caracteres a la derecha desde un ancho dado y colocando un carácter de relleno a la izquierda del carácter que se está imprimiendo(dicho muy groso modo, rellena con algún carácter a la izquierda de forma que se mantenga el alineamiento a las derecha). Si no se especifica el carácter de relleno se toma espacio en blanco por defecto.

 

Esta función rjust() funciona solo con strings, por lo tanto es necesario convertir el valor a imprimir de la matriz en un string, para esto se usa str()

By:Informatica1-udea

bottom of page