Herramientas avanzadas de selección
Técnicas completas de selección de listas
Comprensiones de listas
Las comprensiones de listas proporcionan una forma concisa de crear y seleccionar elementos de una lista basados en condiciones específicas.
## Basic list comprehension
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
## Select even numbers
even_numbers = [num for num in numbers if num % 2 == 0]
## Result: [2, 4, 6, 8, 10]
## Transform and select
squared_evens = [num**2 for num in numbers if num % 2 == 0]
## Result: [4, 16, 36, 64, 100]
Método filter
La función filter()
proporciona otro enfoque de selección poderoso:
## Using filter() to select elements
def is_positive(x):
return x > 0
mixed_numbers = [-1, 0, 1, 2, -3, 4]
positive_numbers = list(filter(is_positive, mixed_numbers))
## Result: [1, 2, 4]
Técnicas avanzadas de selección
Selección con múltiples condiciones
## Complex selection with multiple conditions
data = [
{'name': 'Alice', 'age': 25, 'city': 'New York'},
{'name': 'Bob', 'age': 30, 'city': 'San Francisco'},
{'name': 'Charlie', 'age': 35, 'city': 'New York'}
]
## Select items matching multiple conditions
selected_people = [
person for person in data
if person['age'] > 25 and person['city'] == 'New York'
]
## Result: [{'name': 'Charlie', 'age': 35, 'city': 'New York'}]
Comparación de métodos de selección
Método |
Caso de uso |
Rendimiento |
Flexibilidad |
Rebanado (Slicing) |
Selección de rango simple |
Alto |
Medio |
Comprensión de listas |
Selección condicional |
Medio |
Alto |
Filter() |
Selección funcional |
Medio |
Alto |
Flujo de selección avanzado
graph TD
A[List Selection] --> B[Basic Indexing]
A --> C[Slicing]
A --> D[Comprehensions]
A --> E[Filter Method]
D --> F[Conditional Selection]
E --> G[Functional Selection]
Estrategias prácticas de selección
Combinación de múltiples técnicas
## Complex selection combining multiple methods
numbers = range(1, 21)
result = [
x**2 for x in filter(lambda n: n % 2 == 0, numbers)
if x**2 < 100
]
## Result: [4, 16, 36, 64]
Consideraciones de rendimiento
- Las comprensiones de listas son generalmente más rápidas.
filter()
es más eficiente en memoria para listas grandes.
- Elija el método según el caso de uso específico.
Puntos clave
- Existen múltiples técnicas de selección.
- Cada método tiene fortalezas únicas.
- Las comprensiones ofrecen la mayor flexibilidad.
- Considere el rendimiento y la legibilidad.
LabEx recomienda dominar estas herramientas avanzadas de selección para escribir código Python más eficiente y legible.