Python - Comprensión de listas
Lista de comprensión
La comprensión de listas ofrece una sintaxis más corta cuando desea crear una nueva lista basada en los valores de una lista existente.
Ejemplo:
Basado en una lista de frutas, desea una nueva lista que contenga solo las frutas con la letra "a" en el nombre.
Sin comprensión de lista, tendrá que escribir una for
declaración con una prueba condicional dentro:
Ejemplo
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = []
for x in fruits:
if "a" in x:
newlist.append(x)
print(newlist)
Con la comprensión de listas puedes hacer todo eso con solo una línea de código:
Ejemplo
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x
for x in fruits if "a" in x]
print(newlist)
la sintaxis
newlist = [expression for item in iterable if condition == True]
El valor de retorno es una nueva lista, dejando la lista anterior sin cambios.
Condición
La condición es como un filtro que solo acepta los elementos que se valoran en
True
.
Ejemplo
Solo acepte artículos que no sean "apple":
newlist = [x for x in fruits if x != "apple"]
La condición
if x != "apple"
volverá True
para todos los elementos que no sean "manzana", haciendo que la nueva lista contenga todas las frutas excepto "manzana".
La condición es opcional y se puede omitir:
Ejemplo
Sin if
declaración:
newlist = [x for x in fruits]
Iterable
El iterable puede ser cualquier objeto iterable, como una lista, una tupla, un conjunto, etc.
Ejemplo
Puede usar la range()
función para crear un iterable:
newlist = [x for x in range(10)]
Mismo ejemplo, pero con una condición:
Ejemplo
Aceptar solo números inferiores a 5:
newlist = [x for x in range(10) if x < 5]
Expresión
La expresión es el elemento actual en la iteración, pero también es el resultado, que puede manipular antes de que termine como un elemento de lista en la nueva lista:
Ejemplo
Establezca los valores en la nueva lista en mayúsculas:
newlist = [x.upper()
for x in fruits]
Puedes establecer el resultado como quieras:
Ejemplo
Establezca todos los valores en la nueva lista en 'hola':
newlist = ['hello' for x in fruits]
La expresión también puede contener condiciones, no como un filtro, sino como una forma de manipular el resultado:
Ejemplo
Devuelve "naranja" en lugar de "plátano":
newlist = [x if x != "banana" else "orange"
for x in fruits]
La expresión del ejemplo anterior dice:
"Devolver el artículo si no es plátano, si es plátano devolver naranja".