লিস্ট ও ডিকশনারি কম্প্রিহেনশন
লিস্ট ও ডিকশনারি কম্প্রিহেনশন
আমরা এই চ্যাপ্টারে লিস্ট ও ডিকশনারি কম্প্রিহেনশন সম্পর্কে জানার চেষ্টা করব। প্রথমে লিস্ট কম্প্রিহেনশন বিষয়টা বোঝার জন্য একটা উদাহরণ দিয়ে দেখা যাক।
ধরি, num_list
একটি পাইথন লিস্ট যেখানে ১-১০ সংখ্যাগুলো আছে।
এখন আপনাকে যদি বলা হয় পাইথনে একটি কোড লিখতে যেটা কিনা সংখ্যাগুলো থেকে শুধু জোড় সংখ্যাগুলো নিয়ে আরেকটি লিস্ট তৈরি করতে এবং আপনার যদি লিস্ট কম্প্রিহেনশন সম্পর্কে ধারণা না থাকে তাহলে আপনি অবশ্যই এভাবে লিখবেন,
আউটপুট
কিন্তু আপনার যদি এ ব্যাপারে ভাল ধারণা থাকে তাহলে আপনি কোডটি এক লাইনেই লিখতে পারবেন।
চমৎকার, তাই না?
এটাই পাইথনের মজা, প্রতিটা ল্যাঙ্গুয়েজের আলাদা কিছু বৈশিষ্ট্য থাকে যেটা তাকে আলাদা করে তোলে। লিস্ট কম্প্রিহেনশন পাইথনের ক্ষেত্রে এরকম অন্যতম একটি বৈশিষ্ট্য।
কিন্তু এটা করলাম কীভাবে? একটু ভিজুয়ালাইজ করার চেষ্টা করি!
লিস্ট কম্প্রিহেনশন কী?
একটা লিস্ট / ইটার্যাবল থেকে আরেকটা লিস্টে রূপান্তর করার একটা পদ্ধতি।
পাইথনের লিস্ট কম্প্রিহেনশন জিনিসটা বেশ মজার কিন্তু একই সাথে পাইথন বিগিনার দের জন্য একটু ঝামেলাকর। সেটা দূর করার জন্যই এই চ্যাপ্টার।
রিড্যাবিলিটি
অনেকসময় অন্যের করা লিস্ট কম্প্রিহেনশনের কোডগুলো বোঝা কঠিন হয়ে যায়। সেক্ষেত্রে আপনি চাইলে ভেঙ্গেও লিখতে পারেন।
চলুন আরও কিছু উদাহরণ দেখা যাক।
নেস্টেড লুপের লিস্ট কম্প্রিহেনশন
নেস্টেড লুপের লিস্ট কম্প্রিহেনশন দেখানোর জন্য 2D ম্যাট্রিক্সের উদাহরণ দেখানোর উপরে কিছু নাই। মনে করুন, আপনার একটা Matrix / 2D Array আছে, সেটাকে আপনি ফ্ল্যাটেন বা 1D করতে চাচ্ছেন, এই সমস্যাটা আমরা এভাবে সমাধান করতে পারি,
আউটপুট
লিস্ট কম্প্রিহেনশন ব্যবহার করে,
আউটপুট
আগের মতই কপি পেস্ট করলাম, প্রথমে যেটা অ্যাড করব সেটা লিখলাম তারপর টপ লেভেল লুপ এবং অবশেষে নেস্টেড লুপ লিখে কোডটি কম্প্লিট করলাম।
ধরুন, আপনি matrix_1d
তে প্রতিটা এলিমেন্টের বর্গ বা স্কয়ার ভ্যালু নিতে চাচ্ছেন, তাহলে কোড হবে এমন,
আউটপুট
বাক্য থেকে Vowel দূর করা
সাধারণ নিয়মে,
আউটপুট
লিস্ট কম্প্রিহেনশন ব্যবহার করে
আউটপুট
ডিকশনারি কম্প্রিহেনশন
এটা লিস্ট কম্প্রিহেনশনের মতই, শুধু লিস্টের বদলে ডিকশনারি ডেটা স্ট্রাকচার ব্যবহার করব। আমরা যদি দুইটা লিস্ট থেকে একটা ডিকশনারি বানাতে চাই, যেখানে প্রথমটি Key
এবং পরেরটি Value
তাহলে সাধারণ নিয়মে এভাবে কোড লিখব,
আউটপুট
ডিকশনারি কম্প্রিহেনশন ব্যবহার করে,
আউটপুট
কোন কোন ক্ষেত্রে লিস্ট বা ডিকশনারি কম্প্রিহেনশন ব্যবহার করা শুধু সুবিধাজনক তা-ই নয়, সিম্পল এক্সপ্রেশনে এটা ফর লুপের চেয়েও ফাস্ট। কম্পলেক্স এক্সপ্রেশনে ফর লুপ আর লিস্ট কম্প্রিহেনশনের পারফর্মেন্স প্রায় একই।
সংকলন: মানস
Last updated