Sobes.tech
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:

  1. A filter két argumentumot fogad: egy függvényt (function) és egy iterálható objektumot (iterable).
  2. Végigmegy minden item elemen az iterable-ben.
  3. Minden item esetén meghívja a function(item)-et.
  4. Ha a function(item) eredménye igaz (bármilyen érték, amit a boolean kontextusban True-ként értékelnek), akkor az item bekerül a szűrt iterátorba.
  5. Ha az eredmény hamis (False, None, 0, üres kollekciók), akkor az item kihagyásra kerül.
  6. A filter egy 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 filter egy 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]