Python - Listas en aplicaciones avanzadas | Arreglos

 
Vista:
sin imagen de perfil
Val: 36
Ha aumentado su posición en 17 puestos en Python (en relación al último mes)
Gráfica de Python

Listas en aplicaciones avanzadas | Arreglos

Publicado por Alexander (8 intervenciones) el 09/09/2020 05:34:40
Buenas noches

Tengo problemas para entender esto y me gustaría que alguien si fuera tan amable me explicara.

No lo comprendo porque en el editor de texto me salta error :(

Les agradezco de ante mano por tomarse el tiempo de leer esto.

3.1.7.1 Listas en aplicaciones avanzadas

Listas dentro de listas
El mejor ejemplo de esto sea un tablero de ajedrez.

Un tablero de ajedrez está compuesto de filas y columnas. Hay ocho filas y ocho columnas. Cada columna está marcada con las letras de la A a la H. Cada línea está marcada con un número del uno al ocho.

La ubicación de cada campo se identifica por pares de letras y dígitos. Por lo tanto, sabemos que la esquina inferior derecha del tablero (la que tiene la torre blanca) es A1, mientras que la esquina opuesta es H8.


Supongamos que podemos usar los números seleccionados para representar cualquier pieza de ajedrez. También podemos asumir que cada fila en el tablero de ajedrez es una lista.

Observa el siguiente código:

1
2
3
4
fila = []
 
for i in range(8):
    row.append(PEON_BLANCO)

Crea una lista que contiene ocho elementos que representan la segunda fila del tablero de ajedrez: la que está llena de peones (supon que PEON_BLANCO es un símbolo predefinido que representa un peón blanco).

El mismo efecto se puede lograr mediante una comprensión de lista, la sintaxis especial utilizada por Python para completar o llenar listas masivas.

Una comprensión de lista es en realidad una lista, pero se creó sobre la marcha durante la ejecución del programa, y no se describe de forma estática.

Echa un vistazo al fragmento:

1
fila = [PEON_BLANCO for i in range(8)]
#No comprendo que es PEON_BLANCO

La parte del código colocada dentro de los paréntesis especifica:

Los datos que se utilizarán para completar la lista (PEON_BLANCO)
La cláusula que especifica cuántas veces se producen los datos dentro de la lista (for i in range(8))
Permítenos mostrarte otros ejemplos de comprensión de lista:

Ejemplo # 1:

1
cuadrados = [x ** 2 for x in range(10)]

El fragmento de código genera una lista de diez elementos y rellena con cuadrados de diez números enteros que comienzan desde cero (0, 1, 4, 9, 16, 25, 36, 49, 64, 81)

Ejemplo # 2:

1
dos = [2 ** i for i in range(8)]

El fragmento crea un arreglo de ocho elementos que contiene las primeras ocho potencias del numero dos (1, 2, 4, 8, 16, 32, 64, 128)

Ejemplo # 3:

1
probabilidades = [x for x in cuadrados if x % 2 != 0]

El fragmento hace una lista con solo los elementos impares de la lista cuadrados.


3.1.7.2 Listas en aplicaciones avanzadas | Arreglos

Listas dentro de listas: arreglos bidimensionales
Supongamos también que un símbolo predefinido denominado EMPTY designa un campo vacío en el tablero de ajedrez.

Entonces, si queremos crear una lista de listas que representan todo el tablero de ajedrez, se puede hacer de la siguiente manera:

1
2
3
4
5
tablero  = []
 
for i in range(8):
    fila = [EMPTY for i in range(8)]
    tablero.append(fila)

Nota:

La parte interior del bucle crea una fila que consta de ocho elementos(cada uno de ellos es igual a EMPTY) y lo agrega a la lista del tablero.
La parte exterior se repite ocho veces.
En total, la lista tablero consta de 64 elementos (todos iguales a EMPTY).
Este modelo imita perfectamente el tablero de ajedrez real, que en realidad es una lista de elementos de ocho elementos, todos ellos en filas individuales. Resumamos nuestras observaciones:

Los elementos de las filas son campos, ocho de ellos por fila.
Los elementos del tablero de ajedrez son filas, ocho de ellos por tablero de ajedrez.
La variable tablero ahora es un arreglo bidimensional. También se le llama, por analogía a los términos algebraicos, una matriz.


Como las listas de comprensión puede ser anidadas, podemos acortar la creación del tablero de la siguiente manera:

1
tablero = [[EMPTY for i in range(8)] for j in range(8)]

La parte interna crea una fila, y la parte externa crea una lista de filas.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de Jaime
Val: 526
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Listas en aplicaciones avanzadas | Arreglos

Publicado por Jaime (136 intervenciones) el 13/09/2020 02:31:30
List comprehesion es un tema avanzado de python, en donde en una sola linea, ejecutas un ciclo con o sin condicional.
En este ejemplo,
1
fila = [PEON_BLANCO for i in range(8)]
PEON_BLANCO es una variable que creas para guardarse en la posición X de la lista.
En otras palabras y mostrado en ejemplo, la linea anterior equivale a :
1
2
3
4
fila =[]
for i in range(8):
    PEON_BLANCO = i
    fila.append(PEON_BLANCO)
Es un tema un poquito duro de comprender pero es muy útil.
También se puede meter condicionales.
1
fila = [PEON_BLANCO for i in range(8) if i %2 == 0]

También existe tupla comprehesion, set comprehesion y dic comprehesion(ese si es duro de entender).

Acá un poco más de información https://docs.python.org/3/tutorial/datastructures.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar