পাইথন filter() মেথডটি লিস্ট, সেট এবং টাপল ফিল্টার করতে ব্যবহৃত হয়। filter() প্রদত্ত যেকোনো ক্রাইটেরিয়া অনুসরণ করে একটি ইটারেবল অবজেক্ট ফিল্টার করে এবং ফিল্টার করা রেজাল্ট রিটার্ন করে।
প্রোগ্রামিং করার সময়, আপনার কাছে একটি মানের লিস্ট থাকতে পারে যা আপনি কোনো şekilde ফিল্টার করতে চান। উদাহরণস্বরূপ, আপনার কাছে কুকি অর্ডারের একটি লিস্ট থাকতে পারে এবং আপনি শুধু সেগুলো রিটার্ন করতে চান যেগুলো চকলেটের সাথে জড়িত, যেগুলো আপনার কুকি স্টোরের একটি নির্দিষ্ট রান্না করে।
সেইসঙ্গে পাইথন filter() মেথডটি কাজে আসে। filter() মেথডটি একটি নির্দিষ্ট লিস্টকে পূর্বনির্ধারিত ক্রাইটেরিয়ার সেটের উপর ভিত্তি করে ফিল্টার করতে ব্যবহৃত হতে পারে এবং ফিল্টার করা ডেটার সাথে একটি ইটারেবল রিটার্ন করতে পারে।
এই টিউটোরিয়ালে, আমরা filter() মেথড এবং আপনি আপনার কোডে এটি কীভাবে ব্যবহার করতে পারেন সেটি আলোচনা করব। আমরা পাইথন কোডে ফাংশনটির কিছু উদাহরণও দেখব।
পাইথন ফিল্টার
লিস্ট পাইথনে একটি ডেটা টাইপ যা একাধিক মান একটি সাধারণ থিমের সাথে সংরক্ষণ করতে ব্যবহার করা হয়। উদাহরণস্বরূপ, আপনি একটি লিস্ট ব্যবহার করতে পারেন একটি লোকাল ফ্যাশন স্টোরের সব সেল-এ থাকা কাপড় সংরক্ষণ করতে, বা প্রোগ্রামিং ভাষার নামের একটি লিস্ট সংরক্ষণ করতে।
প্রায়শই, যখন আপনি লিস্টের সাথে কাজ করছেন, আপনি ক্রাইটেরিয়ার একটি সেটের উপর ভিত্তি করে লিস্টটি ফিল্টার আউট করতে চান। উদাহরণস্বরূপ, আপনি একটি সিনেমা হল চালাচ্ছেন এবং জানতে চান আপনার সিনেমা কমপ্লেক্সে ১৮ বছরের নিচে কতজন লোক সিনেমা দেখতে আসে।
filter(), একটি বিল্ট-ইন ফাংশন, একটি লিস্ট ফিল্টার আউট করতে এবং একটি ইটারেটর রিটার্ন করতে ব্যবহার করা যেতে পারে। এখানে filter() মেথডের সিনট্যাক্স:
filter(function, iterable_object)
filter() মেথডটি দুটি প্যারামিটার নেয়:
- function হল সেই কোড যা আপনার নির্দিষ্ট ইটারেবলের প্রতিটি আইটেমে রান হবে (আবশ্যক)। ফাংশনটি চেক করবে ইটারেবল True বা False রিটার্ন করে কিনা।
- iterable_object হল वो অবজেক্ট যা আপনি ফিল্টার করতে চান (আবশ্যক)।
আপনি যে ইটারেবল অবজেক্টটি নির্দিষ্ট করবেন তা যেকোনো ইটারেবল হতে পারে যেমন পাইথন lists, sets, এবং tuples।
পাইথন ফিল্টার উদাহরণ
চলুন একটি উদাহরণ দিয়ে দেখি এই মেথডটি কীভাবে ব্যবহার করা যায়।
ধরুন আপনি একটি ম্যাগেজিন স্ট্যান্ড চালাচ্ছেন এবং আপনি চেক করতে চান আপনাকে নতুন ইনভেন্টরি অর্ডার করতে হবে কিনা। যদি আপনার কাছে যেকোনো ম্যাগেজিনের ২০টির কম এডিশন থাকে, তবে আপনাকে নতুন অর্ডার দিতে হবে; যদি ২০টির বেশি এডিশন থাকে, তবে নতুন অর্ডার দরকার নেই। আপনার কাছে ম্যাগেজিনের কোঙ্কো সংরক্ষণ করে একটি সংখ্যার লিস্ট আছে।
চেক করতে আপনাকে কোনো ম্যাগেজিনের জন্য অর্ডার দিতে হবে কিনা, আপনি নিচের কোড ব্যবহার করতে পারেন:
quantities = [25, 49, 21, 17, 14, 28]
def checkQuantities(mags):
if mags < 20:
return True
else:
return False
filtered_mags = filter(checkQuantities, quantities)
print(list(filtered_mags))
আমাদের কোড রিটার্ন করে: [17, 14]
আমাদের কোডটি ভাঙে ফেলি। প্রথম লাইনে, আমরা quantities নামে একটি ভেরিয়েবল ডিফাইন করেছি যা সংরক্ষণ করে আমাদের ইনভেন্টরিতে প্রতিটি ম্যাগেজিনের কতটি এডিশন আছে।
তারপর, আমরা checkQuantities নামে একটি ফাংশন ডিফাইন করেছি যা চেক করবে কোনো নির্দিষ্ট ম্যাগেজিনের ২০টির কম এডিশন স্টকে আছে কিনা। যদি ২০টির কম থাকে, আমাদের checkQuantities ফাংশন True রিটার্ন করে; অন্যথায়, এটি False রিটার্ন করবে।
পরে, আমরা filter() মেথড ব্যবহার করি এবং checkQuantities কে আমাদের ফাংশন এবং quantities কে আমাদের ইটারেবল অবজেক্ট হিসেবে স্পেসিফাই করি। এটি আমাদের filter() মেথডকে বলে checkQuantities কোঙ্কো আরেতে quantities অ্যারেতে প্রতিটি আইটেমে এক্সিকিউট করতে।
তারপর, আমরা আমাদের filter() মেথডের রেজাল্ট প্রিন্ট করি, এবং list() ব্যবহার করে এটিকে একটি লিস্টে কনভার্ট করি। এটি গুরুত্বপূর্ণ কারণ filter() একটি ফিল্টার করা অবজেক্ট রিটার্ন করে, লিস্ট নয়। তাই, যদি আমরা আমাদের ডেটা দেখতে চাই, তবে আমাদের এটিকে লিস্টে কনভার্ট করতে হবে।
আপনি দেখতে পাচ্ছেন, আমাদের কোড দুটি মান রিটার্ন করে: 17 এবং 14। এগুলো প্রতিটি ২০-এর নিচে, যা মানে আমাদের প্রোগ্রাম ইনটেন্ডেডভাবে কাজ করেছে।
চলুন আরেকটি উদাহরণ দেখি এই মেথডটি কীভাবে কাজ করে তা দেখানোর জন্য। ধরুন আমরা একজন ড্যান্স ইন্সট্রাক্টর এবং আমরা আমাদের ক্লাসে যারা সাত থেকে দশ বছর বয়সের মধ্যে (সাত এবং দশ উভয়ই ইনক্লুসিভ) তাদের বয়স জানতে চাই। আমরা নিচের কোড ব্যবহার করে এই ডেটা পেতে পারি:
student_ages = [7, 9, 8, 10, 11, 11, 8, 9, 12]
def checkAges(ages):
if ages >= 7 and ages <= 10:
return True
else:
return False
filtered_ages = filter(checkAges, student_ages)
print(list(filtered_ages))
আমাদের কোড রিটার্ন করে: [7, 9, 8, 10, 8, 9]। আপনি দেখতে পাচ্ছেন, আমাদের প্রোগ্রাম আমাদের লিস্ট এলিমেন্ট থেকে সাত থেকে দশ বছর বয়সের মধ্যে থাকা ছাত্রদের ফিল্টার আউট করেছে, সাত এবং দশ উভয়ই ইনক্লুসিভ। ফলস্বরূপ লিস্টে আমাদের ফিল্টার করা ডেটা রয়েছে।
ল্যাম্বডা সহ পাইথন ফিল্টার
আমাদের ফিল্টার অপারেশনকে আরও দক্ষ बनाने জন্য, আমরা লিস্ট ম্যাপ ল্যাম্বডা ফাংশন ব্যবহার করতে পারি। ল্যাম্বডা একটি স্পেশাল ফাংশন যা নাম ছাড়া ডিফাইন করা হয় এবং পাইথনে ছোট, এক-লাইন অ্যানোনিমাস ফাংশন লিখতে ব্যবহার করা যেতে পারে।
তাহলে, চলুন উপরের আমাদের ম্যাগেজিন কোঙ্কো উদাহরণটি নিই। সেটাতে, আমরা একটি ফাংশন তৈরি করেছিলাম যা চেক করে আমাদের কাছে কোনো ম্যাগেজিনের ২০টির কম এডিশন স্টকে আছে কিনা এবং আমাদের ম্যাগেজিনের লিস্টে সেই ফাংশন এক্সিকিউট করতে filter() ব্যবহার করেছিলাম। তারপর, আমাদের প্রোগ্রাম প্রতিটি ম্যাগেজিনের জন্য একটি লিস্ট রিটার্ন করেছিল যাদের জন্য আমাদের কাছে ২০টির কম এডিশন ছিল।
আমরা একই কাজটি ল্যাম্বডা ফাংশন ব্যবহার করে আরও দক্ষতার সাথে করতে পারি। এখানে আমরা যে কোডটি ব্যবহার করতে পারি:
quantities = [25, 49, 21, 17, 14, 28] filtered_mags = filter(lambda mag: mag < 20, quantities) print(list(filtered_mags))
আমাদের কোড রিটার্ন করে: [17, 14]।
আপনি দেখতে পাচ্ছেন, আমাদের আউটপুট একই, কিন্তু আমাদের কোড যথেষ্ট ছোট। একটি সম্পূর্ণ ফাংশন ডিফাইন করার বদলে, আমরা ল্যাম্বডা ব্যবহার করে একটি এক-লাইন ফাংশন ডিফাইন করেছি।
এই এক-লাইন ফাংশনটি চেক করে আমাদের কাছে কোনো ম্যাগেজিনের ২০টির কম কপি স্টকে আছে কিনা, এবং সেটি হলে filter() ইটারেটরকে True রিটার্ন করে। এক্সিকিউশনের পর, আমাদের প্রোগ্রাম দুটি মানের সাথে একটি লিস্ট রিটার্ন করে: 17 এবং 14।
উপসংহার
পাইথন filter() ফাংশনটি একটি ইটারেবল অবজেক্টকে পূর্বনির্ধারিত ক্রাইটেরিয়ার সেটের উপর ভিত্তি করে ফিল্টার করতে এবং একটি ফিল্টার করা ইটারেবল রিটার্ন করতে ব্যবহার করা যেতে পারে। এই মেথডটি উপযোগী হতে পারে যদি আপনার কাছে একটি ডেটার লিস্ট থাকে যেখান থেকে আপনি শুধু সেই মানগুলো রিট্রিভ করতে চান যেগুলো নির্দিষ্ট ক্রাইটেরিয়া পূরণ করে।
এই গাইডে, আমরা filter() মেথডের সিনট্যাক্স এবং পাইথনে এটি কীভাবে ব্যবহার করা যায় সেটি আলোচনা করেছি। আমরা filter() একশনের কিছু উদাহরণ এক্সপ্লোর করেছি, তারপর আমরা দেখেছি filter() কীভাবে পাইথন ল্যাম্বডা ফাংশনের সাথে ব্যবহার করা যেতে পারে আমাদের কোডকে আরও দক্ষ बनाने জন্য।
এখন আপনি filter() পাইথন এক্সপার্টের মতো ব্যবহার করার জন্য সজ্জিত!