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:
filterpriima du argumentus: funkciją (function) ir iteruojamą objektą (iterable).- Ji pereina per kiekvieną elementą
itemiterable. - Kiekvienam
itemkviečiama funkcijafunction(item). - Jei
function(item)kvietimo rezultatas yra teisingas (bet kokia reikšmė, kuri vertinama kaipTrueloginėje kontekste),itemįtraukiamas į rezultatų iteratorių. - Jei rezultatas yra klaidingas (
False,None, 0, tušti kolekcijos),itempraleidžiamas. filtergrąž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ų:
filteryra 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] |