Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cómo opera Python en elementos de una matriz multidimensional?

¿Cómo opera Python en elementos de una matriz multidimensional?

En Python, una tabla multidimensional como esta se puede implementar mediante una "secuencia de secuencias". Una tabla es una secuencia de filas. Cada fila es una secuencia de celdas independientes. Esto es similar a la notación matemática que usamos. En matemáticas usamos Ai,j, pero en Python usamos A[i][j], que representa la i-ésima fila y la j-ésima columna de la matriz.

Esto se parece mucho a "Listas de tuplas".

Ejemplo de "Lista de listas":

Podemos crear una tabla usando listas por comprensión anidadas. El siguiente ejemplo crea una tabla que consta de una "secuencia de secuencias" y asigna un valor a cada celda de la tabla.

tabla= [ [ 0 para i en rango(6) ] para j en rango(6) ]

imprimir tabla

para d1 en rango(6) ):

para d2 en el rango(6):

tabla[d1][d2]= d1+d2+2

imprimir tabla

123456

La salida del programa es la siguiente:

[[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]],

[[2, 3, 4, 5, 6, 7], [3, 4, 5, 6, 7 , 8], [4, 5, 6, 7, 8, 9],?

[5, 6, 7, 8, 9, 10], [6, 7, 8, 9, 10 , 11], [7, 8, 9, 10, 11, 12]]

1234

Este programa hace dos cosas: crea una matriz de 6 × 6 de hoja de todos los ceros. Luego, la tabla se completa con las posibles combinaciones de valores de los dos dados. Esta no es la forma más eficaz de lograr esta funcionalidad, pero utilizamos este ejemplo sencillo para demostrar algunas técnicas. Echemos un vistazo más de cerca a la parte delantera y trasera del programa.

La primera parte del programa crea y genera una lista de 6 elementos, que llamamos "tabla"; cada elemento de la tabla es una lista de 6 elementos cero; Utiliza listas por comprensión para crear un objeto para cada j en el rango de 0 a 6. Cada objeto es una lista de 0 elementos, generada al atravesar la variable i de 0 a 6. Una vez completada la inicialización, imprima una tabla bidimensional de 0.

Una derivación se puede leer de adentro hacia afuera, como una expresión ordinaria. La lista interna [0 para i en rango(6)] crea una lista simple de 6 ceros. La lista externa [ [...] for j in range(6) ] crea 6 copias profundas de estas listas internas.

La segunda parte del programa itera a través de cada combinación de los 2 dados, llenando cada celda de la tabla. Esto se logra con dos niveles de bucles anidados, cada bucle itera sobre un dado. El bucle exterior enumera todos los valores posibles para el primer dado, d1. El bucle interno enumera el segundo dado d2.

Al actualizar cada celda, debe seleccionar cada fila a través de la tabla [d1]; esta es una lista que contiene 6 valores. Las celdas seleccionadas en esta lista se seleccionan mediante...[d2]. A esta celda le asignamos el valor de la tirada del dado, d1+d2+2.

Otros ejemplos:

La lista impresa de listas no es fácil de leer. El siguiente bucle muestra la tabla en una forma más legible.

para fila en la tabla:

imprimir fila

[2, 3, 4, 5, 6, 7]

[3 , 4, 5, 6, 7, 8]

[4, 5, 6, 7, 8, 9]

[5, 6, 7, 8, 9, 10 ]

[6, 7, 8, 9, 10, 11]

[7, 8, 9, 10, 11, 12]

12345678910111213

Como ejercicio, los lectores pueden intentar imprimir los encabezados de fila y columna al imprimir el contenido de la lista. Como recordatorio, utilice el operador de cadena de valor % "%2d" para imprimir un formato de número de longitud fija.

Mostrar valores de índice (Explicit Index Values).

A continuación realizamos estadísticas resumidas sobre la tabla de dados y obtenemos la tabla de frecuencia acumulada. Usamos una lista que contiene 13 elementos (indexados del 0 al 12) para representar la frecuencia de cada valor del dado. Observe que el valor 2 del dado aparece sólo una vez en la matriz, por lo que esperamos que el valor de fq[2] sea 1. Recorra cada celda de la matriz para obtener una tabla de frecuencia acumulada.

fq= 13 * [0]

para i en el rango(6):

para j en el rango(6):

c= table[i][j]

fq[ c ] += 1

12345

Utilice el subíndice i para seleccionar filas en la tabla. Utilice subíndice j para seleccionar una columna de la fila, lo que da como resultado la celda c. Luego use fq para contar las frecuencias.

Esto parece muy matemático y formal.

Python proporciona otra forma más sencilla.

Utilice iteradores de lista en lugar de subíndices. Una tabla es una lista de listas. Puede utilizar un bucle for sin subíndices para recorrer los elementos de la lista.

fq= 13 * [0]

imprimir fq

para fila en la tabla:

para c en fila:

fq[c] += 1

imprimir fq[2: