Comprensión de listas
Introducción a la comprensión de listas
La comprensión de listas es una forma concisa y poderosa de crear listas en Python, que te permite generar, transformar y filtrar listas en una sola línea de código.
Sintaxis básica
## Basic list comprehension structure
new_list = [expression for item in iterable]
## Example: Creating a list of squares
squares = [x**2 for x in range(10)]
## Result: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Tipos de comprensión
## Converting strings to uppercase
names = ['alice', 'bob', 'charlie']
uppercase_names = [name.upper() for name in names]
## Result: ['ALICE', 'BOB', 'CHARLIE']
2. Filtrado con condicional
## Filtering even numbers
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = [num for num in numbers if num % 2 == 0]
## Result: [2, 4, 6, 8, 10]
## Nested conditions
result = [x*y for x in range(3) for y in range(3) if x!= y]
## Equivalent to nested loops with condition
Comparación con métodos tradicionales
| Método |
Legibilidad |
Rendimiento |
Complejidad |
| Comprensión de listas |
Alta |
Rápido |
Simple |
| Bucle tradicional |
Media |
Más lento |
Más detallado |
| Función map() |
Baja |
Moderado |
Complejo |
Técnicas avanzadas de comprensión
Comprensión de listas anidadas
## Creating a 3x3 matrix
matrix = [[i*j for j in range(3)] for i in range(3)]
## Result: [[0, 0, 0], [0, 1, 2], [0, 2, 4]]
Expresiones condicionales
## Ternary operation in comprehension
numbers = [1, 2, 3, 4, 5]
classified = ['even' if num % 2 == 0 else 'odd' for num in numbers]
## Result: ['odd', 'even', 'odd', 'even', 'odd']
Flujo de trabajo de la comprensión de listas
graph TD
A[Input Iterable] --> B{Condition}
B -->|Pass| C[Apply Transformation]
B -->|Fail| D[Skip Item]
C --> E[Create New List]
Consideraciones de rendimiento
## Benchmark: List Comprehension vs Traditional Loop
import timeit
## List comprehension
def comp_method():
return [x**2 for x in range(1000)]
## Traditional loop
def loop_method():
result = []
for x in range(1000):
result.append(x**2)
return result
Mejores prácticas
- Utiliza la comprensión de listas para transformaciones simples.
- Evita la lógica compleja dentro de las comprensiones.
- Prioriza la legibilidad.
- Considera las expresiones generadoras para conjuntos de datos grandes.
Errores comunes
- No sacrifices la legibilidad por brevedad.
- Ten cuidado con las comprensiones anidadas complejas.
- El uso de memoria puede ser alto para listas grandes.
Puntos clave
- Las comprensiones de listas proporcionan una forma concisa de crear listas.
- Combinan iteración, transformación y filtrado.
- Son útiles para tareas de manipulación y transformación de datos.
LabEx recomienda practicar las comprensiones de listas para escribir código más "pythonico".