কম্পিউটার টিউটোরিয়াল

পাইথন ডেটা স্ট্রাকচার

প্রোগ্রামিংয়ে ডেটা স্ট্রাকচার অপরিহার্য। এগুলিকে এমনভাবে ডেটা সংগঠিত করতে, সঞ্চয় করতে এবং পরিচালনা করতে ব্যবহার করা হয় যা অ্যাক্সেস এবং পরিবর্তন করতে দক্ষ।

আপনার সাপ্তাহিক লোড লন্ড্রি করার কল্পনা করুন। আদর্শভাবে, সকালে বের হওয়ার আগে সহজে অ্যাক্সেসের জন্য আপনি আলাদা ড্রয়ারে মোজা, টিস, ট্রাউজার এবং উপাদেয় জিনিসগুলি আলাদা করুন। আপনি একটি ডেটা কাঠামোর সাথে প্রস্তুত হচ্ছেন। এখন, সেই সমস্ত জিনিসপত্র একক ড্রয়ারের ভিতরে বা সংগঠন ছাড়া একাধিক ড্রয়ারের ভিতরে ফেলে দেওয়ার কল্পনা করুন। আপনি কতক্ষণ মনে করেন যে আপনি কাজ বা একটি রাতের জন্য শালীন হতে হবে? এটি একটি ডেটা স্ট্রাকচার ছাড়াই প্রস্তুত হচ্ছে।

এই নিবন্ধে, আমরা পাইথনের অফার করা অন্তর্নির্মিত ডেটা স্ট্রাকচারগুলিতে ডুব দিয়েছি।

পাইথনে অন্তর্নির্মিত ডেটা স্ট্রাকচার

পাইথনে অন্তর্নির্মিত ডেটা স্ট্রাকচারের মধ্যে রয়েছে তালিকা, অভিধান, টিপল এবং সেট।

তালিকা

তালিকাগুলি পরিবর্তনযোগ্য (পরিবর্তন করতে সক্ষম) ডেটা স্ট্রাকচার যাতে ভিন্ন ভিন্ন উপাদান বা অংশ থাকতে পারে। অন্য কথায়, একটি একক তালিকায় বিভিন্ন ধরণের ডেটা থাকতে পারে।

 তালিকা =['স্ট্রিং', 300, (2, 4), 'আগের ডেটা টাইপটি একটি টিপল ছিল']

তালিকা ডেটা স্ট্রাকচারে 11টি পদ্ধতি রয়েছে যা তালিকাটি যোগ, অপসারণ বা ম্যানিপুলেট করতে ব্যবহৃত হয়।

একটি তালিকায় উপাদান যোগ করা

  • append():append() পদ্ধতি একটি তালিকায় একটি আইটেম যোগ করে
 list =['string, next is tupel', (2, 1), 3] list.append(500) print(list) # prints ['string, next is tupel', (2, 1), 3 , 500] 
  • extend():extend() পদ্ধতি পুনরাবৃত্তিযোগ্য থেকে সমস্ত আইটেম দ্বারা তালিকা যুক্ত করে। এটি নিম্নলিখিত উপায়ে append() থেকে পৃথক।
list =['string, next is tupel', (2, 1), 3] list.append((8, 9)) print(list) # prints ['string, next is tupel', (2, 1), 3, (8, 9)] # লক্ষ্য করুন যে append() ছেড়ে (8, 9) টিপল হিসাবে 
list =['string, next is tupel', (2, 1), 3] list.extend((8, 9)) print(list) # prints ['string, next is tupel', (2, 1), 3, 8, 9] # লক্ষ্য করুন যে extend() টিপল হিসাবে (8, 9) ছেড়ে যায়নি
  • insert():insert() পদ্ধতি একটি নির্দিষ্ট অবস্থান বা সূচীতে একটি আইটেম সন্নিবেশ করে। প্রথম যুক্তিটি হল উপাদানটির সূচী যা সন্নিবেশ করা দরকার, দ্বিতীয় যুক্তিটি হল উপাদান নিজেই৷
 list =['string, next is tupel', (2, 1), 3] list.insert(0, 700) print(list) # prints [700, 'string, next is tupel', (2, 1), 3]# 0 সূচকে 700 ঢোকানো হয়েছে

একটি তালিকা থেকে উপাদান অপসারণ

  • রিমুভ():রিমুভ() পদ্ধতিটি তালিকার প্রথম আইটেমটিকে সরিয়ে দেয় যাতে এটি দেওয়া মান রয়েছে।
 list =['string, next is tupel', (2, 1), 3, 8, 3] list.remove(3) print(list) # prints ['string, next is tupel', (2, 1), 8, 3] 
  • pop():pop() পদ্ধতিটি যে অবস্থানে দেওয়া হয়েছিল তার একটি মান সরিয়ে দেয়, তবে যদি কোনও সূচক না দেওয়া হয় তবে এটি শেষ আইটেমটিকে সরিয়ে দেয়।
 তালিকা =['স্ট্রিং, পরেরটি টুপেল', (2, 1), 3] তালিকা.পপ(0) মুদ্রণ(তালিকা) # প্রিন্ট [(2, 1), 3]
 list =['string, next is tupel', (2, 1), 3] list.pop() print(list) # প্রিন্ট ['string, next is tupel', (2, 1)] 
  • ক্লিয়ার():clear() পদ্ধতিতে কোন আর্গুমেন্ট লাগে না। এটি তালিকা থেকে সমস্ত আইটেম সরিয়ে দেয়৷
 list =['string, next is tupel', (2, 1), 3] list.clear() print(list) # প্রিন্ট []

অন্যান্য তালিকা পদ্ধতি

  • index():index() পদ্ধতি প্রদত্ত মানের সূচক প্রদান করে।
 তালিকা =[8, 20, 1, 9, 2, 3, 937, 0] print(list.index(9)) # প্রিন্ট 3 
  • count():কাউন্ট() পদ্ধতিটি একটি তালিকায় কতবার একটি মান আসে তা গণনা করে৷
 তালিকা =[8, 20, 1, 8, 2, 8, 937, 8] মুদ্রণ(list.count(8)) # প্রিন্ট 4
  • sort():সর্ট() পদ্ধতিটি আর্গুমেন্ট সহ বা ছাড়া ব্যবহার করা যেতে পারে এবং কাস্টমাইজেশন সাজানোর জন্য ব্যবহার করা যেতে পারে।
 তালিকা =[8, 20, 1, 9, 2, 3, 937, 0] list.sort() print(list) # প্রিন্ট [0, 1, 2, 3, 8, 9, 20, 937] 
 তালিকা =[8, 20, 1, 9, 2, 3, 937, 0] list.sort(reverse=True) print(list) # প্রিন্ট [937, 20, 9, 8, 3, 2, 1 , 0] 
  • বিপরীত ():বিপরীত পদ্ধতিটি তালিকার উপাদানগুলিকে উল্টে দেয়, অনেকটা উপরের সাজানোর পদ্ধতির মতো যা একটি কাস্টমাইজড সাজানোর যুক্তি নেয়৷
 তালিকা =[8, 20, 1, 9, 2, 3, 937, 0] list.reverse() print(list) # প্রিন্ট [0, 937, 3, 2, 9, 1, 20, 8] 
  • কপি():কপি() পদ্ধতিটি কেবল একটি তালিকার একটি অনুলিপি প্রদান করে।
 তালিকা =[8, 20, 1, 9, 2, 3, 937, 0] list.copy() print(list) # প্রিন্ট [8, 20, 1, 9, 2, 3, 937, 0] 

টিপলস

Tuples হল বন্ধনীতে রাখা ডেটা। তালিকার বিপরীতে, তারা পরিবর্তনযোগ্য নয় (অর্থাৎ এটি পরিবর্তন করতে সক্ষম নয়), এবং তারা তালিকার চেয়ে দ্রুত। যেহেতু তারা অপরিবর্তনীয়, তাই আমরা এগুলিকে অভিধানে কী হিসাবেও ব্যবহার করতে পারি। যখনই আমরা একটি ফাংশন থেকে একাধিক ফলাফল ফেরত দিতে চাই তখনও Tuples ব্যবহার করা যেতে পারে।

আমরা সংযোজন ব্যবহার করে একটি টিপলে ডেটা যোগ করতে পারি।

81% অংশগ্রহণকারী বলেছেন যে তারা বুটক্যাম্পে যোগ দেওয়ার পরে তাদের প্রযুক্তিগত কাজের সম্ভাবনা সম্পর্কে আরও আত্মবিশ্বাসী বোধ করেছেন। আজই একটি বুটক্যাম্পের সাথে মিলিত হন৷

গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় ব্যয় করেছে।

 টিপল =(1, 2, 3) মুদ্রণ(টুপল) # প্রিন্ট (1, 2, 3) টিপল =টিপল + (4, 5, 6) মুদ্রণ(টুপল) # প্রিন্ট (1, 2, 3, 4) , 5, 6)

অভিধানসমূহ

ডিকশনারী হল ডাটা স্ট্রাকচার যা জাভাস্ক্রিপ্টের অবজেক্টের মত মূল মান জোড়া ধারণ করে। তালিকার মতো, এই ডেটা স্ট্রাকচারগুলি পরিবর্তনযোগ্য, যার অর্থ আমরা এর ডেটা পরিবর্তন করতে পারি।

একটি মূল মান জোড়ার উদাহরণ হল একজন ব্যক্তির বৈশিষ্ট্য এবং সেই বৈশিষ্ট্যগুলির বর্ণনা। নাম, বয়স, উচ্চতা এবং ওজন সবই চাবিকাঠি হতে পারে। জোশ, 33, 5’10, 180 পাউন্ড, এই কীগুলির জন্য সমস্ত মান হতে পারে।

 dict ={'নাম':'জোশ', 'বয়স':33, 'উচ্চতা':"5'10", 'ওজন':'180 পাউন্ড' }

যেহেতু অভিধানগুলি পরিবর্তনযোগ্য, আমরা 'জোশ'কে অন্য নামে পরিবর্তন করতে পারি।

 dict ={'name':'Josh', 'age':33, 'height':"5'10", 'weight':'180 lbs' } dict['name'] ='Patrick' প্রিন্ট (dict) # প্রিন্ট {'নাম':'প্যাট্রিক', 'বয়স':33, 'উচ্চতা':"5'10", 'ওজন':'180 পাউন্ড'

আমরা নতুন কী মান জোড়া তৈরি করে মান যোগ করতে পারি।

dict ={'নাম':'জোশ', 'বয়স':33, 'উচ্চতা':"5'10", 'ওজন':'180 পাউন্ড' } dict['location'] ='সান ফ্রান্সিসকো' print(dict)# প্রিন্ট {'নাম':'জোশ', 'বয়স':33, 'উচ্চতা':"5'10", 'ওজন':'180 পাউন্ড', 'অবস্থান':'সান ফ্রান্সিসকো'} 

আমরা del কীওয়ার্ড, pop(), বা popitem() পদ্ধতি ব্যবহার করে অভিধানে কী মান জোড়া মুছে ফেলতে পারি। উল্লেখ্য যে অভিধানের সাথে pop() অবশ্যই একটি আর্গুমেন্ট নিতে হবে, তাই অভিধান থেকে শেষ কী মান জোড়া থেকে সরাতে আমাদের popitem() প্রয়োজন।

dict ={'নাম':'জোশ', 'বয়স':33, 'উচ্চতা':"5'10", 'ওজন':'180 পাউন্ড' } del dict['name']print(dict) # প্রিন্ট {'বয়স':33, 'উচ্চতা':"5'10", 'ওজন':'180 পাউন্ড' }
dict ={'নাম':'জোশ', 'বয়স':33, 'উচ্চতা':"5'10", 'ওজন':'180 পাউন্ড' } dict.pop('name')print(dict )# প্রিন্ট {'বয়স':33, 'উচ্চতা':"5'10", 'ওজন':'180 পাউন্ড' }
dict ={'নাম':'জোশ', 'বয়স':33, 'উচ্চতা':"5'10", 'ওজন':'180 পাউন্ড' } dict.popitem()print(dict)# প্রিন্ট {'নাম':'জোশ', 'বয়স':33, 'উচ্চতা':"5'10"}

আমরা কেবলমাত্র কী বা শুধুমাত্র একটি অভিধানের মানগুলিও মুদ্রণ করতে পারি।

dict ={'নাম':'জোশ', 'বয়স':33, 'উচ্চতা':"5'10", 'ওজন':'180 পাউন্ড' } প্রিন্ট(dict.keys())# প্রিন্ট dict_keys (['নাম', 'বয়স', 'উচ্চতা', 'ওজন'])
dict ={'নাম':'জোশ', 'বয়স':33, 'উচ্চতা':"5'10", 'ওজন':'180 পাউন্ড' } প্রিন্ট(dict.values())# প্রিন্ট dict_values (['জোশ', 33, "5'10", '180 পাউন্ড'])

মূল মান জোড়া হিসাবে প্রিন্ট করতে, আমরা আইটেম() পদ্ধতি ব্যবহার করতে পারি।

dict ={'নাম':'জোশ', 'বয়স':33, 'উচ্চতা':"5'10", 'ওজন':'180 পাউন্ড' } প্রিন্ট(dict.items())# প্রিন্ট dict_items ([('নাম', 'জোশ'), ('বয়স', 33), ('উচ্চতা', "5'10"), ('ওজন', '180 পাউন্ড')])

সেট

সেটগুলি পরিবর্তনযোগ্য, অনন্য উপাদানগুলির বিন্যাসহীন সংগ্রহ, যার অর্থ তারা সদৃশ উপাদানগুলি অন্তর্ভুক্ত করে না। সেটগুলিকে অভিধানের মতো দেখায় যে তারা উভয়ই কোঁকড়া বন্ধনীতে ডেটা ধারণ করে, কিন্তু অভিধানের বিপরীতে, সেটগুলিতে কী মান জোড়া থাকে না।

সেট ={1, 2, 2, 2, 3, 3, 4, 4} প্রিন্ট(সেট)# প্রিন্ট {1, 2, 3, 4}

আমরা add() পদ্ধতি ব্যবহার করে সেটে উপাদান যোগ করতে পারি।

সেট ={1, 2, 2, 2, 3, 3, 4, 4} set.add(5)print(set)# print {1, 2, 3, 4, 5}

সেট, ইউনিয়ন(), ইন্টারসেকশন(), পার্থক্য(), এবং সিমেট্রিক_ডিফারেন্স() ব্যবহার করার সময় আমাদের কাছে আরও চারটি পদ্ধতি উপলব্ধ রয়েছে।

  • ইউনিয়ন():union() পদ্ধতি দুটি পার্থক্য সেটকে একত্রিত করে, উভয়ের সাধারণতা গ্রহণ করে এবং এটিকে কোনো সদৃশ ছাড়াই একক সেট হিসেবে তৈরি করে।
সেট ={1, 2, 2, 2, 3, 3, 4, 4} set.add(5)print(set)# prints {1, 2, 3, 4, 5} otherSet ={3, 3, 4, 4, 5, 5, 6}মুদ্রণ(set.union(anotherSet))# প্রিন্ট {1, 2, 3, 4, 5, 6}
  • ছেদ():ছেদ পদ্ধতি উভয় সেটে সাধারণ উপাদান খুঁজে পায়।
সেট ={1, 2, 2, 2, 3, 3, 4, 4} set.add(5)print(set)# prints {1, 2, 3, 4, 5} otherSet ={3, 3, 4, 4, 5, 5, 6}মুদ্রণ(set.intersection(antherSet))# প্রিন্ট {3, 4, 5}
  • পার্থক্য():পার্থক্য পদ্ধতিটি ছেদ পদ্ধতির বিপরীত কাজ করে যে এটি সমস্ত সাধারণতা বের করে এবং প্রথম সেট থেকে যা অবশিষ্ট থাকে তা প্রিন্ট করে।
সেট ={1, 2, 2, 2, 3, 3, 4, 4} set.add(5)print(set)# prints {1, 2, 3, 4, 5} otherSet ={3, 3, 4, 4, 5, 5, 6}মুদ্রণ(set.dfference(antherSet))# প্রিন্ট {1, 2}
  • symmetric_difference():symmetric_difference() পদ্ধতিটি পার্থক্য পদ্ধতির মতই, যদি আমরা আউটপুটে উভয় সেটের পার্থক্য পাই।
সেট ={1, 2, 2, 2, 3, 3, 4, 4} set.add(5)print(set)# prints {1, 2, 3, 4, 5} otherSet ={3, 3, 4, 4, 5, 5, 6}মুদ্রণ(set.symmetric_difference(antherSet))# প্রিন্ট {1, 2, 6}

  1. পাইথন চেক করুন তালিকা খালি কিনা

  2. কিভাবে Python এ অপরিবর্তনীয় ডেটা স্ট্রাকচার বাস্তবায়ন করবেন?

  3. সি-তে কাঠামো

  4. ডেটা স্ট্রাকচারে সংলগ্নতা তালিকা