Data Structures in Python হল ডেটার লজিক্যাল বিবরণ যার সাহায্যে আমরা ডেটা insertion, deletion এবং retrieval খুব সহজে ও দক্ষতার (efficiently ) সাথে করতে পারি। efficiently মানে আমরা দুটি সীমাবদ্ধতা বিবেচনা করব, একটি হলো টাইম কমপ্লেক্সিটি(time complexity) এবং অপরটি হল স্পেস কমপ্লেক্সিটি(space complexity)।
Table of Contents
আমাদের বেসিক লক্ষ্য হলো একটা ভালো প্রোগ্রাম লেখা , হতে পারে সেই প্রোগ্রামটা দিয়ে আমরা কোন ভালো সফটওয়্যার তৈরি করতে পারি অথবা সেটি দিয়ে আমরা আমাদের দৈনন্দিন কোন সমস্যার সমাধান করতে পারি। আমরা, প্রোগ্রামাররা এমনভাবে প্রোগ্রাম লিখি যাতে প্রোগ্রামটি থেকে আমরা সঠিক আউটপুট পাই। কিন্তু একটি সঠিক প্রোগ্রাম মানেই যে প্রোগ্রামটা ভালো এমনটা নাও হতে পারে।
একটা ভালো প্রোগ্রামের বেশ কিছু বৈশিষ্ট্য আছে যেমন – প্রোগ্রামটির পঠন যোগ্যতা , প্রোগ্রামটির সঠিক ডকুমেন্টেশন , প্রোগ্রামটি যাতে সহজেই পরিবর্তন এবং ডি-বাগ করা যায় ইত্যাদি । কিন্তু সব থেকে গুরুত্বপূর্ণ বৈশিষ্ট্য হল দক্ষতা, মানে একটা প্রোগ্রাম কতটা কম সময়ে আউটপুট দিতে পারছে এবং কত কম মেমরি নিয়ে কাজ করতে পারছে। এটি অর্জনের জন্য আমাদের কিছু লজিক্যাল মডেল অনুসরণ করে মেমরিতে ডেটা স্টোর(store ) এবং পুনরুদ্ধার (retrieve) করতে হবে।
Also Read :- Basic List Operations and List methods in Easy Bengali 2024
Data Types
আমরা সকলেই জানি ডেটা হল তথ্য। এখন আমাদের পুরো একটা প্রোগ্রামে আমাদের কিছু প্রয়োজনীয় তথ্যের প্রয়োজন হয়। যেমন – আমাদের একটি ওয়েবসাইট আছে এটি হলো ডেটা। কিন্তু আমাদের ওয়েবসাইটের নাম `techinbengali` এটি হল ইনফরমেশন। সুতরাং সকল ডেটার টাইপ এক নয়। কারণ কিছু ডেটা নাম্বার, স্ট্রিং বা বুলিয়ান। সুতরাং এই ধরনের ডেটা গুলিই ডেটা টাইপ নামে পরিচিত।
কিছু প্রচলিত ডেটা টাইপ হলো-
- Integer
- float
- double
- string
- boolean
আমরা ডেটা টাইপকে তিন ভাগে বিভক্ত করতে পারি।
Primitive Data Type
যে ধরনের ডেটা টাইপ পূর্বনির্ধারিত(predefined) এবং বিল্ট-ইন (in-built) অথবা বেসিক ডেটা টাইপ।
যেমন- integer, string , boolean ইত্যাদি।
User Defined Data Type
এমন ডেটা-টাইপ যেগুলি প্রোগ্রামাররা তাদের অ্যাপ্লিকেশন র প্রয়োজন মতো তৈরি করে।
যেমন- C প্রোগ্রামিং এ User Defined ডেটা-টাইপ হল union, structure এবং python, javascript প্রোগ্রামিং এ User Defined ডেটা-টাইপ হল class।
Abstract Data Type (ADT)
‘Abstract’ কথাটির অর্থ প্রোগ্রামিং এর অভ্যন্তরীণ কাঠামো(structure) লুকানো। abstract ডেটা-টাইপ হলো এমন এক ধরনের অবজেক্ট(object) যেটির অভ্যন্তরীণ কাঠামো(internal structure) ব্যবহৃত হয় ডেটা-স্টোর করার জন্য কিন্তু ডেটার সমস্ত কার্যকলাপ(operations ) লুকানো থাকে।
যেমন – stack হলো একটি abstract ডেটা-টাইপ। এটিতে দুটি অপারেশন আছে। প্রথমটি Push , এই অপারেশন টি হল stack এ ডেটা ইনসার্ট করার জন্য , দ্বিতীয়টি pop , এই অপারেশন টি হল stack থেকে ডেটা বার(retrieve) করার জন্য।
কিন্তু ADT(Abstract Data Type) মতে stack
টিকে array , list অথবা linked list কি দিয়ে তৈরি করা হয়েছে সেটি গুরুত্বপুর্ণ নয়। এমনকি adt
প্রকাশ করে না যে সেই ডেটা-টাইপ কোন প্রোগ্রামিং ল্যাঙ্গুয়েজ ব্যাবহার করে তৈরি করা হয়েছে।
Also Read :- What is List in Python | Learn in Easy Bengali 2024
What is Data Structures in Python
এটা স্ট্রাকচার হল ডেটার লজিক্যাল বিবরণ যার সাহায্যে আমরা ডেটা insertion, deletion এবং retrieval খুব সহজে ও দক্ষতার (efficiently ) সাথে করতে পারি। efficiently মানে আমরা দুটি সীমাবদ্ধতা বিবেচনা করব। একটি হলো টাইম কমপ্লেক্সিটি(time complexity) এবং অপরটি হল স্পেস কমপ্লেক্সিটি(space complexity)। Time complexity নির্দেশ করে একটি অ্যালগরিদম কত তাড়াতাড়ি একটি নির্দিষ্ট কাজকে এক্সিকিউট (execute ) করতে পারে অপর আরেকটি অ্যালগরিদম দিয়ে তৈরি প্রোগ্রামের থেকে। এবং space complexity নির্দেশ করে অ্যালগরিদমের মধ্যে তুলনামূলক পরিমাপ যা কোন অ্যালগরিদমের একটি নির্দিষ্ট কাজের জন্য অন্যদের তুলনায় কম জায়গা(space) নেয়।
তাই ডেটা-স্ট্রাকচার আমাদেরকে কম সময় (time ) এবং স্পেস (space ) এর সাথে ডেটা সংরক্ষণ(store ) ,ডিলিট(delete) এবং পুনরুদ্ধার(retrieve) করতে সাহায্য করে।
Also Read :- What is Module in Python | Learn in Easy Bengali 2024
Definition of various Data Structures in Python
এলিমেন্ট গুলির ordering এর ওপর ভিত্তি করে ডেটা স্ট্রাকচার কে দুই ভাগে ভাগ করা হয়।
- linear data-structure
- non-linear data-structure
linear data-structure
যে ডেটা-স্ট্রাকচারের এলিমেন্ট গুলি একটি নির্দিষ্ট sequence গঠন করে তাদেরকে linear ডেটা-স্ট্রাকচার বলে । linear ডেটা-স্ট্রাকচারের প্রত্যেকটি এলিমেন্টের একটি আলাদা predecessor এবং successor এলিমেন্ট থাকবে । যেমন – array, linked – list , stack এবং queue।
non-linear data-structure
অপরদিকে , যে ডেটা-স্ট্রাকচারের এলিমেন্ট গুলি কোন নির্দিষ্ট sequence গঠন করে না তাদেরকে non-linear ডেটা-স্ট্রাকচার বলে । এখানে আমরা সঠিকভাবে বলতে পারি না যে কোন এলিমেন্টের predecessor অথবা successor এলিমেন্ট কোনটি । যেমন – tree এবং graph।
এলিমেন্ট গুলির data-type এর ওপর ভিত্তি করে আবারও আমরা ডেটা স্ট্রাকচার কে দুই ভাগে ভাগ করতে পারি।
- homogeneous data-structure
- non-homogeneous data-structure
homogeneous data-structure
যে ডেটা-স্ট্রাকচারের প্রতিটি এলিমেন্টের data-type গুলি যদি সমান হয় তাহলে তাদেরকে আমরা homogeneous ডেটা-স্ট্রাকচার বলবো।
যেমন – array একটি homogeneous ডেটা-স্ট্রাকচার কারণ একটি array তে আমরা যেকোনো একটি data-type র ডেটা সংরক্ষণ (store) করতে পারি।
non-homogeneous data-structure
অপরদিকে, যে ডেটা-স্ট্রাকচারের প্রতিটি এলিমেন্টের data-type গুলি যদি বিভিন্ন হয় তাহলে তাদেরকে আমরা non-homogeneous ডেটা-স্ট্রাকচার বলবো।
যেমন – পাইথনের list একটি non-homogeneous ডেটা-স্ট্রাকচার কারণ একটি লিস্ট এ আমরা বিভিন্ন data-type র ডেটা সংরক্ষণ (store) করতে পারি।
Memory allocation এর ওপর ভিত্তি করে আবারও আমরা ডেটা স্ট্রাকচার কে দুই ভাগে ভাগ করতে পারি।
- static data-structure
- non-static/dynamic data-structure
static data-structure
যদি কোন ডেটা-স্ট্রাকচারে কতগুলি এলিমেন্ট থাকবে সেটা আগে থেকেই fixed হয় এবং যদি প্রোগ্রামটি compile করার আগেই আমরা ডেটা-স্ট্রাকচারটিতে size বলে দিই তাহলে সেই ডেটা-স্ট্রাকচারটিকে আমরা static ডেটা-স্ট্রাকচার বলবো।
যেমন – array একটি static ডেটা-স্ট্রাকচার কারণ প্রোগ্রামটিকে compile করার আগেই আমরা array সাইজ বলে দিই।
non-static/dynamic data-structure
অন্যদিকে, যদি কোন ডেটা-স্ট্রাকচারে কতগুলি এলিমেন্ট থাকবে সেটা আগে থেকেই fixed না হয়ে আমরা আমাদের প্রয়োজনমতো এলিমেন্টকে insert অথবা ডিলিট করতে পারিbতাহলে সেই ডেটা-স্ট্রাকচারটিকে আমরা non-static/dynamic ডেটা-স্ট্রাকচার বলবো।
যেমন – linked list
Also Read :- File Handling in Python | Easy Bengali 2023
Popular types of Data Structures in Python
- Array
- linked-list
- Stack
- Queue
- Graph
- Tree
- Heap
এগুলি নিয়ে আমরা পরের পোস্ট গুলিতে আলোচনা করব।
Also Read :- Function in Python | Easy Bengali 2024
এই পোস্টটি পড়ে আপনাদের মূলবান মতামত জানাতে আমাদের কমেন্ট করুন। আপনাদের কোনো প্রশ্ন থাকলে নির্দ্ধিধায় জিজ্ঞেসা করুন। আমরা চেষ্টা করবো যতো দ্রুত সম্ভব উত্তর দেবার।
ধন্যবাদ!!