Junior
Hogyan működik a filter() függvény Pythonban?
sobes.tech MI
Válasz az MI-től
A filter(function, iterable) függvény egy iterátort hoz létre azokból az iterable elemekből, amelyeknél a function(item) igaz értéket ad vissza.
Működési elv:
- A
filterkét argumentumot fogad: egy függvényt (function) és egy iterálható objektumot (iterable). - Végigmegy minden
itemelemen aziterable-ben. - Minden
itemesetén meghívja afunction(item)-et. - Ha a
function(item)eredménye igaz (bármilyen érték, amit a boolean kontextusbanTrue-ként értékelnek), akkor azitembekerül a szűrt iterátorba. - Ha az eredmény hamis (
False,None, 0, üres kollekciók), akkor azitemkihagyásra kerül. - A
filteregy késleltetett (lazy) módon generáló iteratort ad vissza.
Használati példa:
# Páros számok szűrése
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers_iterator = filter(lambda x: x % 2 == 0, numbers)
# Az iterator listává alakítása a megjelenítéshez
print(list(even_numbers_iterator))
# Üres stringek szűrése
strings = ["hello", "", "world", None, "python"]
non_empty_strings_iterator = filter(None, strings) # None mint függvény azonos az identity-vel (lambda x: x), ellenőrzi az igazságértéket
print(list(non_empty_strings_iterator))
A különbség a listakomprehensziókhoz képest:
- A
filteregy iteratort ad vissza (késleltetett értékelés), ami nagy adatmennyiség esetén hatékony. - A listakomprehenszió azonnal létrehoz egy új listát (több memóriát igényel).
| Jellemző | filter() | Listakomprehenszió |
|---|---|---|
| Visszatérési típus | Iterator | Lista |
| Értékelés | Késleltetett (kérésre) | Azonnali (létrehozáskor) |
| Memória | Nagy adatoknál hatékony | Sok memóriát igényelhet |
| Szintaxis | filter(func, iterable) |
[item for item in iterable if condition] |