تابع Filter در پایتون
تابع Filter در پایتون برای انتخاب و استخراج عناصری از یک iterable (مانند لیست، تاپل یا رشته) بر اساس یک شرط خاص استفاده میشود. این متد، یک iterabe جدید شامل عناصر فیلتر شده را برمیگرداند و لیست اصلی را تغییر نمیدهد.
نحوه عملکرد:
فرض کنید لیست numbers
شامل مقادیر [1, 2, 3, 4, 5, 6]
باشد.
میخواهیم لیستی جدید شامل تمام اعداد زوج در لیست numbers
ایجاد کنیم.
میتوانیم این کار را با استفاده از filter()
به شرح زیر انجام دهیم:
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # خروجی: [2, 4, 6]
در این مثال، lambda x: x % 2 == 0
یک تابع بی نام است که به عنوان شرط فیلتر عمل میکند.
این تابع، True را برای اعداد زوج و False را برای اعداد فرد برمیگرداند.
متد filter()
از این تابع برای بررسی هر عنصر در لیست numbers
استفاده میکند و فقط عناصری که شرط را True میکنند در لیست even_numbers
جدید ذخیره میکند.
مثالهای کاربردی:
1. فیلتر کردن اعداد زوج از یک لیست:
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # خروجی: [2, 4, 6]
2. فیلتر کردن رشتهها بر اساس طول:
words = ["apple", "banana", "orange", "grape"]
long_words = list(filter(lambda word: len(word) > 5, words))
print(long_words) # خروجی: ["banana", "orange"]
3. فیلتر کردن اشیاء بر اساس نوع:
data = [1, "Hello", True, 3.14, [1, 2]]
numbers = list(filter(lambda x: isinstance(x, int), data))
print(numbers) # خروجی: [1, 3]
4. فیلتر کردن تاپلها بر اساس مقدار عنصر خاص:
tuples = [(1, 2), (3, 4), (5, 6), (7, 8)]
even_second_elements = list(filter(lambda t: t[1] % 2 == 0, tuples))
print(even_second_elements) # خروجی: [(2, 4), (6, 8)]
5. ترکیب توابع فیلتر:
میتوان از توابع متعدد در filter()
برای اعمال چند شرط به طور همزمان استفاده کرد:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_and_divisible_by_3 = list(filter(lambda x: x % 2 == 0 and x % 3 == 0, numbers))
print(even_and_divisible_by_3) # خروجی: [6]
نکات:
filter()
یک iterabe جدید شامل عناصر فیلتر شده را برمیگرداند و لیست اصلی را تغییر نمیدهد.- برای استفاده از
filter()
, به یک تابع بی نام یا یک تابع از پیش تعریف شده به عنوان شرط فیلتر نیاز دارید. - می توانید از
filter()
برای فیلتر کردن انواع مختلف داده (مانند لیست، تاپل، رشته و اشیاء) استفاده کنید. - می توانید از توابع متعدد در
filter()
برای اعمال چند شرط به طور همزمان استفاده کنید.