আমি নিজেকে ফিল্টারিংয়ের একটি মৌলিক প্রয়োজনীয়তা খুঁজে পেয়েছি: আমার একটি তালিকা আছে এবং আইটেমগুলির একটি বৈশিষ্ট্য দ্বারা আমাকে এটি ফিল্টার করতে হবে।
আমার কোডটি এরকম দেখাচ্ছে:
my_list = [x for x in my_list if x.attribute == value]
তবে আমি ভেবেছিলাম, এভাবে লেখা কি ভাল হয় না?
my_list = filter(lambda x: x.attribute == value, my_list)
এটি আরও পঠনযোগ্য, এবং যদি পারফরম্যান্সের প্রয়োজন হয় তবে ল্যাম্বডা কিছু পাওয়ার জন্য নেওয়া যেতে পারে।
প্রশ্নটি হ'ল: দ্বিতীয় উপায়টি ব্যবহার করার ক্ষেত্রে কি কোনও গুপ্তচর রয়েছে? কোন পারফরম্যান্স পার্থক্য? আমি কি পাইথোনিক ওয়ে অনুপস্থিত ™ পুরোপুরি এবং এটি অন্য কোনও উপায়ে করা উচিত (যেমন ল্যাম্বদার পরিবর্তে আইটেমটার ব্যবহার করা)?
filter
ফিল্টার জেনারেটরের কোনও তালিকা নয়।
filter
এটি আরও পাঠযোগ্য। যখন আপনার কাছে একটি সরল অভিব্যক্তি থাকে যা তালিকার কম্পিউটারে যেমন হয় তেমন ব্যবহার করা যেতে পারে তবে ল্যাম্বডায় (বা অনুরূপভাবে নির্মিতpartial
বাoperator
ফাংশন ইত্যাদি) আবৃত করতে হয়filter
, যখন লাস্টকম্পস জিতে থাকে।