Sobes.tech
Junior

Kaip veikia filter() funkcija Python'e?

sobes.tech AI

Atsakymas iš AI

filter(function, iterable) funkcija sukuria iteratorių iš tų elementų iterable, kuriems function(item) grąžina teisingą (true) reikšmę.

Veikimo principas:

  1. filter priima du argumentus: funkciją (function) ir iteruojamą objektą (iterable).
  2. Ji pereina per kiekvieną elementą item iterable.
  3. Kiekvienam item kviečiama funkcija function(item).
  4. Jei function(item) kvietimo rezultatas yra teisingas (bet kokia reikšmė, kuri vertinama kaip True loginėje kontekste), item įtraukiamas į rezultatų iteratorių.
  5. Jei rezultatas yra klaidingas (False, None, 0, tušti kolekcijos), item praleidžiamas.
  6. filter grąžina iteratorių, kuris lėtai generuoja filtruotus elementus.

Pavyzdys:

# Lyginių skaičių filtravimas
skaičiai = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers_iterator = filter(lambda x: x % 2 == 0, skaičiai)

# Konvertuoti iteratorių į sąrašą parodymui
print(list(even_numbers_iterator))

# Tuščių eilučių filtravimas
eilutės = ["labas", "", "pasaulis", None, "python"]
non_empty_strings_iterator = filter(None, eilutės) # None kaip funkcija yra ekvivalentas identitetui (lambda x: x), tikrina tiesą

print(list(non_empty_strings_iterator))

Skirtumas nuo sąrašų generatorių:

  • filter yra lazdiškas (vykdomas pagal poreikį), kas efektyvu dideliems duomenims.
  • Sąrašų generatorius sukuria naują sąrašą iš karto (reikalauja daugiau atminties).
Bruožas filter() Sąrašų generatorius
Grąžinamas tipas Iteratorius Sąrašas
Apskaičiavimas Lazdiškas (poreikio) Visas (iš karto)
Atmintis Efektyvus dideliems duomenims Gali naudoti daug atminties
Sintaksė filter(func, iterable) [item for item in iterable if condition]