কম্পিউটার

পাইথন অগ্রাধিকার সারি:একটি গাইড

পাইথন অগ্রাধিকার সারি:একটি নির্দেশিকা

একটি পাইথন অগ্রাধিকার সারি একটি নির্দিষ্ট ক্রমে ডেটা সঞ্চয় করে। পাইথনে অগ্রাধিকার সারি বাস্তবায়নের দুটি উপায় রয়েছে:কিউ ক্লাস ব্যবহার করে এবং heapq মডিউল ব্যবহার করে৷

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

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

এই টিউটোরিয়াল আলোচনা করবে কেন আপনার অগ্রাধিকার সারি তৈরি করতে একটি তালিকা ব্যবহার করা উচিত নয়। আমরা আপনাকে আরও দুটি দক্ষ পন্থা দেখাব যা আপনি একটি পাইথন অগ্রাধিকার সারি তৈরি করতে ব্যবহার করতে পারেন৷

পাইথন অগ্রাধিকার সারি কি?

অগ্রাধিকার সারি হল একটি সারির একটি পরিবর্তিত সংস্করণ যা ডেটা সঞ্চয় করে যাতে কোন উপাদানের সর্বোচ্চ অগ্রাধিকার থাকে। একটি অগ্রাধিকার সারিতে প্রতিটি উপাদানের অগ্রাধিকার উপাদানের মানের উপর নির্ভর করে সিদ্ধান্ত নেওয়া হয়৷

কম্পিউটার সায়েন্সে, সারি হল ডেটা স্ট্রাকচার যা আইটেমগুলিকে ফার্স্ট-ইন, ফার্স্ট-আউট (FIFO) ক্রমে সংরক্ষণ করে। এই কাঠামো ব্যবহার করে সহায়ক হতে পারে এমন কয়েকটি পরিস্থিতি রয়েছে।

উদাহরণস্বরূপ, ধরুন আপনি একটি রেস্টুরেন্টের জন্য একটি অর্ডার ট্র্যাকিং অ্যাপ তৈরি করছেন। যে ব্যক্তি প্রথমে একটি অর্ডার দেয় তাকে পরবর্তীতে যারা অর্ডার দেয় তাদের আগে পরিবেশন করা উচিত। অর্ডার ট্র্যাক রাখতে, আপনি একটি সারি ব্যবহার করতে চান৷

পাইথনে একটি অগ্রাধিকার সারি সংজ্ঞায়িত করার দুটি উপায় রয়েছে:

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

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

  • প্রোরিটি কিউ কিউ ক্লাস ব্যবহার করা হচ্ছে
  • heapq মডিউল ব্যবহার করে

আপনি একটি তালিকা কাঠামো ব্যবহার করে একটি অগ্রাধিকার সারি সংজ্ঞায়িত করতে পারেন। কিন্তু, এই কৌশলটি PriorityQueue queue ক্লাস বা heapq মডিউল ব্যবহার করার চেয়ে কম কার্যকর।

অগ্রাধিকার সারি পাইথন:সারি। অগ্রাধিকার সারি

সারি। অগ্রাধিকার সারি ক্লাস একটি পাইথন অগ্রাধিকার সারি তৈরি করে। এই ক্লাসটি পাইথন কিউ লাইব্রেরির অংশ। এই ক্লাসটি ব্যবহার করার জন্য আপনাকে সারি লাইব্রেরি আমদানি করতে হবে। একটি অগ্রাধিকার সারি থেকে একটি আইটেম পুনরুদ্ধার করতে, আপনি get() পদ্ধতি ব্যবহার করতে পারেন৷

PriorityQueue ক্লাস অ্যাক্সেস করতে, আমাদের এটিকে আমাদের কোডে আমদানি করতে হবে, যা আমরা পাইথন আমদানি বিবৃতি ব্যবহার করে করতে পারি:

from queue import PriorityQueue

ধরুন আমরা একটি স্থানীয় কনসার্টে টিকিটধারীদের জন্য একটি অগ্রাধিকার সারি তৈরি করতে চাই। আমরা এই কোডটি ব্যবহার করে তা করতে পারি:

from queue import PriorityQueue

ticket_holders = PriorityQueue()

ticket_holders.put((3, 'Paul'))
ticket_holders.put((1, 'Miles'))
ticket_holders.put((2, 'Dani'))

while not ticket_holders.empty():
	item = ticket_holders.get()
	print(item)

আমাদের কোড ফিরে আসে:

(1, 'Miles')
(2, 'Dani')
(3, 'Paul')

আমাদের কোডে, আমরা প্রথমে সারি থেকে PriorityQueue ক্লাস ইম্পোর্ট করি লাইব্রেরি, তারপর আমরা একটি অগ্রাধিকার সারি শুরু করি যার নাম টিকিট_হোল্ডার . এর পরে, আমরা আমাদের অগ্রাধিকার সারিতে তিনটি টিপল সন্নিবেশ করি, যা একটি টিকিটের সাথে যুক্ত টিকিটের নম্বর এবং নাম সংরক্ষণ করে৷

টিকিট_হোল্ডারদের প্রতিটি আইটেমের মধ্য দিয়ে চালানোর জন্য আমরা একটি পাইথন ব্যবহার করি অগ্রাধিকার সারি। তারপর, আমরা get() ব্যবহার করে সেই আইটেমটি পুনরুদ্ধার করি .

সারি। অগ্রাধিকার সারি পদ্ধতিটি দক্ষ এবং ব্যবহার করা সহজ, যা আপনাকে যখন একটি অগ্রাধিকার সারি তৈরি করতে হবে তখন এটি একটি দুর্দান্ত পছন্দ করে তোলে৷

অগ্রাধিকার সারি পাইথন heapq মডিউল

heapq মডিউল আপনাকে একটি পাইথন অগ্রাধিকার সারি সংজ্ঞায়িত করতে দেয়। একটি heapq ডেটা কাঠামো আইটেমগুলিকে তাদের অগ্রাধিকার অনুসারে সরিয়ে দেয়। সর্বনিম্ন মানের সর্বনিম্ন অগ্রাধিকার রয়েছে এবং heapq কাঠামোতে সর্বোচ্চ মানের সর্বোচ্চ অগ্রাধিকার রয়েছে৷

আমরা heapq মডিউল ব্যবহার করার আগে, আমাদের প্রথমে নিম্নলিখিত আমদানি বিবৃতি ব্যবহার করে আমাদের কোডে এটি আমদানি করতে হবে:

import heapq

আমাদের আগের উদাহরণে ফিরে আসা যাক। ধরুন আমরা একটি কনসার্টে টিকিটধারীদের সম্পর্কে তথ্য সংরক্ষণ করার জন্য একটি অগ্রাধিকার সারি তৈরি করতে চাই। আমরা heapq মডিউল এবং এই প্রোগ্রামটি ব্যবহার করে তা করতে পারি:

import heapq

ticket_holders = []

heapq.heappush(ticket_holders, (3, 'Paul'))
heapq.heappush(ticket_holders, (1, 'Miles'))
heapq.heappush(ticket_holders, (2, 'Dani'))

while ticket_holders:
	item = heapq.heappop(ticket_holders)
	print(item)

আমাদের কোড ফিরে আসে:

(1, 'Miles')
(2, 'Dani')
(3, 'Paul')

প্রথমে, আমরা heapq লাইব্রেরি আমদানি করেছি, এবং তারপর আমরা একটি পাইথন ভেরিয়েবল শুরু করেছি যার নাম ticket_holders . আমরা heappush() ব্যবহার করেছি তিনটি টিপলকে আমাদের অগ্রাধিকার সারিতে ঠেলে দেওয়ার পদ্ধতি। এই সারিতে প্রতিটি টিকিটধারীর টিকিট নম্বর এবং প্রতিটি টিকিটধারীর নাম সংরক্ষণ করা হয়।

আমরা তারপর একটি সময় লুপ তৈরি করেছি যা আমাদের অগ্রাধিকার সারিতে প্রতিটি আইটেমের মধ্য দিয়ে লুপ করে। এই লুপটি heappop() ব্যবহার করে সারির শীর্ষে থাকা আইটেমটিকে সরিয়ে দেয় . তারপরে, সরানো আইটেমটি কনসোলে মুদ্রিত হয়। আপনি দেখতে পাচ্ছেন, আমাদের সারিতে থাকা সমস্ত আইটেম তাদের অগ্রাধিকার অনুসারে প্রিন্ট করা হয়েছে৷

কেন আপনার একটি তালিকা রাখা উচিত নয়

প্রযুক্তিগতভাবে, আপনি পাইথন তালিকা ডেটা কাঠামো ব্যবহার করে একটি অগ্রাধিকার সারি তৈরি করতে পারেন। এটি করার জন্য, আপনি একটি তালিকা তৈরি করবেন, তারপর এটিকে ক্রমবর্ধমান ক্রমে অর্ডার করবেন।

যাইহোক, এটি একটি অগ্রাধিকার সারি বজায় রাখার একটি অপেক্ষাকৃত অদক্ষ উপায়। আপনি তালিকায় আইটেম পরিবর্তন করার সাথে সাথে আপনাকে তালিকাটি পুনরায় অর্ডার করতে হবে, এতে সময় লাগে।

আপনি একটি অগ্রাধিকার সারি হিসাবে একটি ঐতিহ্যগত তালিকা ব্যবহার করতে পারেন যদি আপনার শুধুমাত্র কয়েকটি মান সঞ্চয় করতে হয়। কিন্তু, যদি আপনি একটি বড় সারি তৈরি করতে চান, তালিকা একটি ভাল বিকল্প নয়।

রেফারেন্সের জন্য, আসুন তালিকা ব্যবহার করে অগ্রাধিকার সারির একটি উদাহরণের মাধ্যমে চলুন। ধরুন আমরা একটি অগ্রাধিকার সারি তৈরি করতে চাই যা টিকিটধারীদের অর্ডার সঞ্চয় করে যাদের প্রথমে একটি কনসার্টে যেতে দেওয়া উচিত। এই সারি তৈরি করতে আমরা নিম্নলিখিত কোড ব্যবহার করতে পারি:

ticket_holders = []

ticket_holders.append((3, 'Paul'))
ticket_holders.append((1, 'Miles'))
ticket_holders.append((2, 'Dani'))

ticket_holders.sort(reverse=True)

while ticket_holders:
	item = ticket_holders.pop()
	print(item)

আমাদের কোড ফিরে আসে:

(1, 'Miles')
(2, 'Dani')
(3, 'Paul')

আমরা টিকিটধারী নামে একটি তালিকা তৈরি করেছি , তারপর আমরা তালিকায় তিনটি টিপল যোগ করেছি। প্রতিটি টিপলে একজন টিকিটধারীর টিকিট নম্বর এবং তাদের নাম ছিল। তারপর, আমরা পাইথন sort() ব্যবহার করেছি আমাদের টিকিটধারীদের তালিকাকে বিপরীত ক্রমে সাজানোর ফাংশন৷

আমরা একটি সময় লুপ তৈরি করেছি যা টিকিট_হোল্ডারদের প্রতিটি আইটেমের মাধ্যমে পুনরাবৃত্তি করে তালিকা এবং তালিকার শীর্ষে আইটেম। তারপর, আমাদের কোড সরানো আইটেমটিকে কনসোলে প্রিন্ট করে।

উপসংহার

একটি অগ্রাধিকার সারি তৈরি করতে সবচেয়ে সাধারণ দুটি হল heapq মডিউল বা সারি। অগ্রাধিকার সারি ব্যবহার করা ক্লাস যদিও আপনি প্রযুক্তিগতভাবে একটি তালিকাকে অগ্রাধিকার সারিতে ব্যবহার করতে পারেন, এই পদ্ধতিটি ভালভাবে মাপতে পারে না৷

এই টিউটোরিয়ালটি উদাহরণের সাথে আলোচনা করা হয়েছে, কিভাবে পাইথনে একটি অগ্রাধিকার সারি তৈরি করা যায়। পাইথন পেশাদারের মতো আপনার নিজের অগ্রাধিকার সারি তৈরি করা শুরু করার জন্য আপনার প্রয়োজনীয় জ্ঞানের সাথে এখন আপনি সজ্জিত!

কিভাবে Python শিখতে হয় সে সম্পর্কে আরো নির্দেশনার জন্য, আমাদের সম্পূর্ণ কিভাবে পাইথন শিখবেন গাইড দেখুন।


  1. পাইথনে পিগোরিদম মডিউল

  2. পাইথনে অগ্রাধিকার সারি কীভাবে প্রয়োগ করবেন?

  3. পাইথনে মাল্টিথ্রেডেড অগ্রাধিকার সারি

  4. পাইথনে হিপ কিউ (বা হেপকিউ)