La comprensión de listas es una de las características más sorprendentes de Pitón . Es una forma inteligente y concisa de crear listas iterando sobre un objeto iterable. Las listas por comprensión anidadas no son más que una lista por comprensión dentro de otra lista por comprensión que es bastante similar a los bucles for anidados.
Comprensión de listas anidadas en la sintaxis de Python
A continuación se muestra la sintaxis de anidado. comprensión de la lista :
pyspark sql
Sintaxis: new_list = [[expresión para el elemento de la lista] para el elemento de la lista]
Parámetros:
- Expresión : Expresión que se utiliza para modificar cada elemento del enunciado
- Artículo: El elemento en el iterable.
- Lista: Un objeto iterable
Ejemplos de comprensión de listas anidadas de Python
A continuación se muestran algunos ejemplos de comprensión de listas anidadas:
Ejemplo 1: Creando una matriz
En este ejemplo, compararemos cómo podemos crear una matriz cuando lo estamos creando con
Sin comprensión de listas
En este ejemplo, se crea una matriz de 5×5 utilizando una estructura de bucle anidado. Un bucle externo se repite cinco veces y agrega sublistas vacías almatrix>, mientras que un bucle interno completa cada sublista con valores que van de 0 a 4, lo que da como resultado una matriz con valores enteros consecutivos.
Python3
matrix>=> []> for> i>in> range>(>5>):> ># Append an empty sublist inside the list> >matrix.append([])> >for> j>in> range>(>5>):> >matrix[i].append(j)> print>(matrix)> |
>
>Producción
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]>
Usar la comprensión de listas
Se puede lograr el mismo resultado utilizando la comprensión de listas anidadas en una sola línea. En este ejemplo, se genera una matriz de 5 × 5 utilizando una lista por comprensión anidada. La comprensión externa se repite cinco veces, representando las filas, mientras que la comprensión interna llena cada fila con valores que van de 0 a 4, lo que da como resultado una matriz con valores enteros consecutivos.
Python3
# Nested list comprehension> matrix>=> [[j>for> j>in> range>(>5>)]>for> i>in> range>(>5>)]> print>(matrix)> |
>
>Producción
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]>
Ejemplo 2: Filtrar una lista anidada mediante comprensión de lista
Aquí veremos cómo podemos filtrar una lista con y sin utilizar la comprensión de listas.
Sin utilizar la comprensión de listas
En este ejemplo, un bucle anidado atraviesa una matriz 2D, extrae números impares de la lista de Python dentro de la lista y los agrega a la lista.odd_numbers>. La lista resultante contiene todos los elementos impares de la matriz.
Python3
matrix>=> [[>1>,>2>,>3>], [>4>,>5>,>6>], [>7>,>8>,>9>]]> odd_numbers>=> []> for> row>in> matrix:> >for> element>in> row:> >if> element>%> 2> !>=> 0>:> >odd_numbers.append(element)> print>(odd_numbers)> |
>
>Producción
[1, 3, 5, 7, 9]>
Usar la comprensión de listas
En este ejemplo, se utiliza una lista por comprensión para generar de manera sucinta la lista.odd_numbers>iterando a través de los elementos de una matriz 2D. Sólo se incluyen elementos impares en la lista resultante, lo que proporciona una alternativa concisa y legible a la estructura de bucle anidado equivalente.
Python3
matrix>=> [[>1>,>2>,>3>], [>4>,>5>,>6>], [>7>,>8>,>9>]]> odd_numbers>=> [> >element>for> row>in> matrix>for> element>in> row>if> element>%> 2> !>=> 0>]> print>(odd_numbers)> |
>
>Producción
[1, 3, 5, 7, 9]>
Ejemplo 3: Aplanar sublistas anidadas
Sin comprensión de listas
En este ejemplo, una lista 2D llamadamatrix>con diferentes longitudes de sublista se aplana mediante bucles anidados. Los elementos de cada sublista se agregan secuencialmente a la lista.flatten_matrix>, lo que da como resultado una representación aplanada de la matriz original.
Python3
# 2-D List> matrix>=> [[>1>,>2>,>3>], [>4>,>5>], [>6>,>7>,>8>,>9>]]> flatten_matrix>=> []> for> sublist>in> matrix:> >for> val>in> sublist:> >flatten_matrix.append(val)> print>(flatten_matrix)> |
>
>Producción
[1, 2, 3, 4, 5, 6, 7, 8, 9]>
Con comprensión de listas
Nuevamente, esto se puede hacer usando la comprensión de listas anidadas que se muestra a continuación. En este ejemplo, una lista 2D llamadamatrix>con diferentes longitudes de sublista se aplana utilizando la comprensión de listas anidadas. La expresion[val for sublist in matrix for val in sublist]>genera sucintamente una lista aplanada al incluir secuencialmente cada elemento de las sublistas.
Python3
# 2-D List> matrix>=> [[>1>,>2>,>3>], [>4>,>5>], [>6>,>7>,>8>,>9>]]> # Nested List Comprehension to flatten a given 2-D matrix> flatten_matrix>=> [val>for> sublist>in> matrix>for> val>in> sublist]> print>(flatten_matrix)> |
>
>
prime no code in javaProducción
[1, 2, 3, 4, 5, 6, 7, 8, 9]>
Ejemplo 4: Manipular cadenas mediante comprensión de listas
Sin comprensión de listas
En este ejemplo, una lista 2D llamadamatrix>que contiene cadenas se modifica usando anidado bucles . El bucle interior pone en mayúscula la primera letra de cada fruta y el bucle exterior construye una nueva lista 2D,modified_matrix>, con los frutos en mayúscula, dando como resultado una matriz de cadenas con letras mayúsculas iniciales.
Python3
matrix>=> [[>'apple'>,>'banana'>,>'cherry'>],> >[>'date'>,>'fig'>,>'grape'>],> >[>'kiwi'>,>'lemon'>,>'mango'>]]> modified_matrix>=> []> for> row>in> matrix:> >modified_row>=> []> >for> fruit>in> row:> >modified_row.append(fruit.capitalize())> >modified_matrix.append(modified_row)> print>(modified_matrix)> |
>
>Producción
[['Apple', 'Banana', 'Cherry'], ['Date', 'Fig', 'Grape'], ['Kiwi', 'Lemon', 'Mango']]>
Con comprensión de listas
En este ejemplo, una lista 2D llamadamatrix>que contiene cadenas se transforma mediante comprensión de listas anidadas. La expresion[[fruit.capitalize() for fruit in row] for row in matrix]>genera eficientemente una matriz modificada donde la primera letra de cada fruta está en mayúscula, dando como resultado una nueva matriz de cadenas con letras iniciales en mayúscula.
Python3
matrix>=> [[>'apple'>,>'banana'>,>'cherry'>],> >[>'date'>,>'fig'>,>'grape'>],> >[>'kiwi'>,>'lemon'>,>'mango'>]]> modified_matrix>=> [[fruit.capitalize()>for> fruit>in> row]>for> row>in> matrix]> print>(modified_matrix)> |
>
>Producción
[['Apple', 'Banana', 'Cherry'], ['Date', 'Fig', 'Grape'], ['Kiwi', 'Lemon', 'Mango']]>