Sobes.tech
Junior

Ինչպես է աշխատում filter() ֆունկցիան Python-ում?

sobes.tech AI

Պատասխան AI-ից

Ֆիլտրի filter(function, iterable) գործառույթը ստեղծում է ինթերատոր այն տարրերից iterable, որոնց համար function(item) վերադարձնում է ճշմարիտ (true) արժեք:

Աշխատանքի սկզբունքը:

  1. filter ընդունում է երկու արգումենտ՝ ֆունկցիա (function) և ինթերատոր օբյեկտ (iterable).
  2. Այն անցնում է յուրաքանչյուր տարր item-ի վրա iterable-ում:
  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 որպես ֆունկցիա համարժեք է ինքնությանը (lambda x: x), ստուգում է ճշմարտացիությունը

print(list(non_empty_strings_iterator))

Արտահայտություն գեներատորների ցուցակներից:

  • filter վերադարձնում է ինթերատոր (դանդաղեցված կատարման), ինչը արդյունավետ է մեծ տվյալների համար:
  • Ցուցակների գեներատորը ստեղծում է նոր ցուցակ անմիջապես (պահանջում է ավելի շատ հիշողություն):
Գծանշում filter() Ցուցակների գեներատոր
Վերադարձվող տիպը Իթերատոր Ցուցակ
Հաշվարկը Դանդաղեցված (պահանջվում է) Ամբողջական (միջից սկսած)
Հիշողություն Էֆեկտիվ մեծ տվյալների համար Կարող է շատ հիշողություն պահանջել
Սինտաքսիս filter(func, iterable) [item for item in iterable if condition]