আমার কাছে বুলিয়ানের একটি তালিকার মানগুলিকে ফিল্টার করার দরকারগুলির একটি তালিকা রয়েছে:
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]
)।