Filterungstechniken
Filterung mit Listen-Abstraktion (List Comprehension)
Die Listen-Abstraktion (List Comprehension) bietet eine kompakte Möglichkeit, Listen auf der Grundlage boolescher Bedingungen zu filtern:
## Basic filtering
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = [num for num in numbers if num % 2 == 0]
print(even_numbers) ## [2, 4, 6, 8, 10]
Die filter()
-Funktion
Die filter()
-Funktion bietet eine weitere leistungsstarke Filterungsmethode:
def is_positive(x):
return x > 0
numbers = [-1, 0, 1, 2, -3, 4]
positive_numbers = list(filter(is_positive, numbers))
print(positive_numbers) ## [1, 2, 4]
Boolesche Filterungstechniken
Technik |
Beschreibung |
Beispiel |
Listen-Abstraktion (List Comprehension) |
Inline-Filterung |
[x for x in list if condition] |
filter() -Funktion |
Funktionale Filterung |
filter(function, iterable) |
Bedingte Ausdrücke (Conditional Expressions) |
Ternär-ähnliche Filterung |
value if condition else alternative |
Fortgeschrittene Filterung mit mehreren Bedingungen
## Complex filtering
data = [
{'name': 'Alice', 'age': 25, 'active': True},
{'name': 'Bob', 'age': 30, 'active': False},
{'name': 'Charlie', 'age': 35, 'active': True}
]
## Filter active users over 30
filtered_users = [
user for user in data
if user['active'] and user['age'] > 30
]
print(filtered_users)
Visualisierung des Filterungsablaufs
graph TD
A[Input Data] --> B{Apply Filter Condition}
B -->|Passes Condition| C[Keep Item]
B -->|Fails Condition| D[Discard Item]
C --> E[Filtered Result]
D --> E
Boolesche Indizierung mit NumPy
import numpy as np
## NumPy boolean filtering
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
filtered_arr = arr[arr % 2 == 0]
print(filtered_arr) ## [2 4 6 8 10]
Leistungsüberlegungen
Filterungsmethode |
Zeitkomplexität |
Lesbarkeit |
Listen-Abstraktion (List Comprehension) |
O(n) |
Hoch |
filter() |
O(n) |
Mittel |
NumPy-Boolesche Indizierung |
O(n) |
Hoch |
Wichtige Filterungsstrategien
- Verwenden Sie die Listen-Abstraktion für einfache, lesbare Filterungen.
- Nutzen Sie die
filter()
-Funktion für funktionale Programmieransätze.
- Betrachten Sie NumPy für die Filterung numerischer Daten.
LabEx empfiehlt, diese Techniken zu meistern, um effizienten und sauberen Filterungscode in Python zu schreiben.