আমার কাছে বুলিয়ানের একটি তালিকার মানগুলিকে ফিল্টার করার দরকারগুলির একটি তালিকা রয়েছে:
list_a = [1, 2, 4, 6]
filter = [True, False, True, False]
আমি নিম্নলিখিত লাইনের সাথে একটি নতুন ফিল্টারড তালিকা তৈরি করেছি:
filtered_list = [i for indx,i in enumerate(list_a) if filter[indx] == True]
যার ফলাফল:
print filtered_list
[1,4]
লাইনটি কাজ করে তবে (আমার কাছে) কিছুটা ওভারকিল দেখায় এবং আমি ভাবছিলাম যে এটির কোনও সহজ উপায় আছে কিনা।
উপদেশাবলী
নীচে উত্তরে দেওয়া দুটি ভাল পরামর্শ সংক্ষিপ্তসার:
1- filterআমার মতো তালিকার নাম রাখবেন না কারণ এটি একটি অন্তর্নির্মিত ফাংশন।
2- Trueআমার পছন্দ মতো জিনিসগুলির সাথে তুলনা করবেন না if filter[idx]==True..কারণ এটি অপ্রয়োজনীয়। শুধু ব্যবহার if filter[idx]যথেষ্ট।
if filter[indx] == Trueনা না ব্যবহার ==আপনার সাথে পরিচয় যাচাই করতে চান তাহলে True, ব্যবহার is। যাইহোক এই ক্ষেত্রে পুরো তুলনা অকেজো, আপনি সহজভাবে ব্যবহার করতে পারেন if filter[indx]। শেষ অবধি: কোনও ভেরিয়েবল / মডিউল নাম হিসাবে অন্তর্নির্মিত নামটি কখনই ব্যবহার করবেন না (আমি নামটি উল্লেখ করছি filter)। এর মতো কিছু ব্যবহার করে included, যাতে ifসুন্দরভাবে পড়তে পারে ( if included[indx])।