Sobes.tech
Junior
191

Python-да filter() функциясы қалай жұмыс істейді?

AI-дан жауап

sobes.tech AI

filter(function, iterable) функциясы iterable ішінен function(item) шын мәнін (true) қайтаратын элементтерді ғана қайтару үшін итератор құрады.

Жұмыс принципі:

  1. filter екі аргумент қабылдайды: функция (function) және қайталанатын объект (iterable).
  2. Ол iterable ішіндегі әрбір элемент item-ді айналып өтеді.
  3. Әрбір item үшін function(item) функциясы шақырылады.
  4. Егер function(item) шақыру нәтижесі шын мәнді (бұл True деп бағаланатын кез келген мән), item нәтижелік итераторға қосылады.
  5. Егер нәтиже жалған болса (False, None, 0, бос коллекциялар), item өткізіп жіберіледі.
  6. 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]