Junior
191
Python-да filter() функциясы қалай жұмыс істейді?
AI-дан жауап
sobes.tech AI
filter(function, iterable) функциясы iterable ішінен function(item) шын мәнін (true) қайтаратын элементтерді ғана қайтару үшін итератор құрады.
Жұмыс принципі:
filterекі аргумент қабылдайды: функция (function) және қайталанатын объект (iterable).- Ол
iterableішіндегі әрбір элементitem-ді айналып өтеді. - Әрбір
itemүшінfunction(item)функциясы шақырылады. - Егер
function(item)шақыру нәтижесі шын мәнді (бұлTrueдеп бағаланатын кез келген мән),itemнәтижелік итераторға қосылады. - Егер нәтиже жалған болса (
False,None, 0, бос коллекциялар),itemөткізіп жіберіледі. filterленивті түрде фильтрленген элементтерді шығаратын итераторды қайтарады.
Қолдану мысалы:
# Жұп сандарды фильтрлеу
сандар = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers_iterator = filter(lambda x: x % 2 == 0, сандар)
# Итераторды тізімге айналдыру
print(list(even_numbers_iterator))
# Бос емес жолдарды фильтрлеу
жолдар = ["сәлем", "", "әлем", None, "python"]
non_empty_strings_iterator = filter(None, жолдар) # None функцияның орнына `identity` (lambda x: x) ретінде жұмыс істейді, шындықты тексереді
print(list(non_empty_strings_iterator))
Генераторлармен салыстырғанда айырмашылығы:
filterленивті түрде жұмыс істейтін итераторды қайтарады, бұл үлкен деректер үшін тиімді.- Генераторлы тізім бірден жаңа тізім құрады (жадты көп пайдаланады).
| Белгісі | filter() | Тізім генераторы |
|---|---|---|
| Қайтарылатын тип | Итератор | Тізім |
| Есептеу | Ленивті (талап бойынша) | Барлық уақытта жадты пайдаланады |
| Жады | Үлкен деректер үшін тиімді | Көп жадты талап етуі мүмкін |
| Синтаксис | filter(func, iterable) |
[item for item in iterable if condition] |