تابع Filter در پایتون
تابع Filter در پایتون برای انتخاب و استخراج عناصری از یک iterable (مانند لیست، تاپل یا رشته) بر اساس یک شرط خاص استفاده میشود. این متد، یک iterabe جدید شامل عناصر فیلتر شده را برمیگرداند و لیست اصلی را تغییر نمیدهد.
نحوه عملکرد:
فرض کنید لیست numbers
شامل مقادیر [۱, ۲, ۳, ۴, ۵, ۶]
باشد.
میخواهیم لیستی جدید شامل تمام اعداد زوج در لیست numbers
ایجاد کنیم.
میتوانیم این کار را با استفاده از filter()
به شرح زیر انجام دهیم:
even_numbers = list(filter(lambda x: x % ۲ == ۰, numbers))
print(even_numbers) # خروجی: [۲, ۴, ۶]
در این مثال، lambda x: x % 2 == 0
یک تابع بی نام است که به عنوان شرط فیلتر عمل میکند.
این تابع، True را برای اعداد زوج و False را برای اعداد فرد برمیگرداند.
متد filter()
از این تابع برای بررسی هر عنصر در لیست numbers
استفاده میکند و فقط عناصری که شرط را True میکنند در لیست even_numbers
جدید ذخیره میکند.
مثالهای کاربردی:
۱. فیلتر کردن اعداد زوج از یک لیست:
numbers = [۱, ۲, ۳, ۴, ۵, ۶]
even_numbers = list(filter(lambda x: x % ۲ == ۰, numbers))
print(even_numbers) # خروجی: [۲, ۴, ۶]
۲. فیلتر کردن رشتهها بر اساس طول:
words = ["apple", "banana", "orange", "grape"]
long_words = list(filter(lambda word: len(word) > ۵, words))
print(long_words) # خروجی: ["banana", "orange"]
۳. فیلتر کردن اشیاء بر اساس نوع:
data = [۱, "Hello", True, ۳.۱۴, [۱, ۲]]
numbers = list(filter(lambda x: isinstance(x, int), data))
print(numbers) # خروجی: [۱, ۳]
۴. فیلتر کردن تاپلها بر اساس مقدار عنصر خاص:
tuples = [(۱, ۲), (۳, ۴), (۵, ۶), (۷, ۸)]
even_second_elements = list(filter(lambda t: t[۱] % ۲ == ۰, tuples))
print(even_second_elements) # خروجی: [(۲, ۴), (۶, ۸)]
۵. ترکیب توابع فیلتر:
میتوان از توابع متعدد در filter()
برای اعمال چند شرط به طور همزمان استفاده کرد:
numbers = [۱, ۲, ۳, ۴, ۵, ۶, ۷, ۸, ۹, ۱۰]
even_and_divisible_by_3 = list(filter(lambda x: x % ۲ == ۰ and x % ۳ == ۰, numbers))
print(even_and_divisible_by_3) # خروجی: [۶]
نکات:
filter()
یک iterabe جدید شامل عناصر فیلتر شده را برمیگرداند و لیست اصلی را تغییر نمیدهد.- برای استفاده از
filter()
, به یک تابع بی نام یا یک تابع از پیش تعریف شده به عنوان شرط فیلتر نیاز دارید. - می توانید از
filter()
برای فیلتر کردن انواع مختلف داده (مانند لیست، تاپل، رشته و اشیاء) استفاده کنید. - می توانید از توابع متعدد در
filter()
برای اعمال چند شرط به طور همزمان استفاده کنید.