Python میں قطاروں کے لیے رہنما

Python میں قطاروں کے لیے رہنما

تعارف

سادہ عدد کو ذخیرہ کرنے سے لے کر پیچیدہ ورک فلو کو منظم کرنے تک، ڈیٹا ڈھانچے مضبوط ایپلی کیشنز کی بنیاد رکھتے ہیں۔ ان میں سے، قطار اکثر دلچسپ اور ہر جگہ دونوں کے طور پر ابھرتا ہے۔ اس کے بارے میں سوچو - a بینک میں لائن، فاسٹ فوڈ کاؤنٹر پر اپنی باری کا انتظار کرنا، یا کمپیوٹر سسٹم میں بفرنگ کے کام — یہ تمام منظرنامے قطار کے میکانکس سے گونجتے ہیں۔

لائن میں پہلے شخص کو پہلے پیش کیا جاتا ہے، اور نئے آنے والے آخر میں شامل ہوتے ہیں۔ یہ عمل میں قطار کی ایک حقیقی زندگی کی مثال ہے!

python-01.png میں قطاروں میں رہنمائی

ڈویلپرز کے لیے، خاص طور پر ازگر میں، قطاریں کمپیوٹر سائنس کی نصابی کتاب سے صرف نظریاتی تعمیرات نہیں ہیں۔ وہ بہت سے ایپلی کیشنز میں بنیادی فن تعمیر کی تشکیل کرتے ہیں۔ ایک پرنٹر میں کاموں کے انتظام سے لے کر لائیو نشریات میں بغیر کسی رکاوٹ کے ڈیٹا کو یقینی بنانے تک، قطاریں ایک ناگزیر کردار ادا کرتی ہیں۔

اس گائیڈ میں، ہم قطاروں کے تصور، ان کی خصوصیات، حقیقی دنیا کی ایپلی کیشنز، اور سب سے اہم بات، انہیں Python میں مؤثر طریقے سے لاگو کرنے اور استعمال کرنے کا طریقہ تلاش کریں گے۔

قطار ڈیٹا کی ساخت کیا ہے؟

ڈیٹا ڈھانچے کے منظر نامے کے ذریعے تشریف لاتے ہوئے، ہمیں اکثر ایسے کنٹینرز کا سامنا ہوتا ہے جن میں ڈیٹا کے اندراج اور بازیافت کے الگ الگ اصول ہوتے ہیں۔ ان میں سے، قطار اس کی خوبصورتی اور براہ راست کے لئے باہر کھڑا ہے.

FIFO اصول

اس کے مرکز میں، ایک قطار ایک لکیری ڈیٹا ڈھانچہ ہے جو کہ پر عمل کرتا ہے۔ فرسٹ ان فرسٹ آؤٹ (FIFO) اصول اس کا مطلب یہ ہے کہ قطار میں شامل پہلا عنصر سب سے پہلے ہٹا دیا جائے گا۔ اسے متعلقہ منظر نامے سے تشبیہ دینے کے لیے: ٹکٹ کاؤنٹر پر صارفین کی ایک لائن پر غور کریں۔ جو شخص پہلے آتا ہے اسے پہلے ٹکٹ ملتا ہے، اور بعد میں آنے والے اپنی باری کا انتظار کرتے ہوئے آخر میں قطار میں کھڑے ہوتے ہیں۔

نوٹ: ایک قطار کے دو سرے ہوتے ہیں - پیچھے اور سامنے. سامنے والا اشارہ کرتا ہے کہ عناصر کہاں سے ہٹائے جائیں گے، اور پیچھے اشارہ کرتا ہے کہ نئے عناصر کہاں شامل کیے جائیں گے۔

بنیادی قطار کے آپریشنز

  • قطار - کا عمل انہوں نے مزید کہا آخر تک ایک عنصر (پیچھے) قطار کا۔

    python-02.png میں قطاروں میں رہنمائی

  • ڈیکیو - کا عمل کو ہٹانے کے سے ایک عنصر سامنے قطار کے

    python-03.png میں قطاروں میں رہنمائی

  • جھانکنا یا سامنے - بہت سے حالات میں، صرف سامنے والے عنصر کو ہٹائے بغیر اس کا مشاہدہ کرنا فائدہ مند ہے۔ یہ آپریشن ہمیں ایسا کرنے کی اجازت دیتا ہے۔

  • خالی ہے - ایک آپریشن جو اس بات کا تعین کرنے میں مدد کرتا ہے کہ آیا قطار میں کوئی عناصر موجود ہیں۔ یہ ان منظرناموں میں اہم ہو سکتا ہے جہاں اعداد و شمار کے ساتھ قطار میں کارروائیاں ہوتی ہیں۔

نوٹ: جب کہ کچھ قطاروں کا سائز محدود ہوتا ہے (باؤنڈڈ قطاریں)، دوسری ممکنہ طور پر اس وقت تک بڑھ سکتی ہیں جب تک کہ سسٹم میموری اجازت دیتا ہے (غیر پابند قطار)۔

قطاروں کی سادگی اور ان کے آپریشن کے واضح اصول انہیں سافٹ ویئر ڈویلپمنٹ میں مختلف ایپلی کیشنز کے لیے مثالی بناتے ہیں، خاص طور پر ایسے منظرناموں میں جو منظم اور منظم پروسیسنگ کا مطالبہ کرتے ہیں۔

تاہم، تھیوری کو سمجھنا صرف پہلا قدم ہے۔ جیسے جیسے ہم آگے بڑھیں گے، ہم عملی پہلوؤں کا جائزہ لیں گے، یہ واضح کرتے ہوئے کہ Python میں قطاروں کو کیسے نافذ کیا جائے۔

ازگر میں قطاروں کو کیسے لاگو کیا جائے - فہرستیں بمقابلہ ڈیک بمقابلہ قطار ماڈیول

پائتھون، اپنی بھرپور معیاری لائبریری اور صارف دوست نحو کے ساتھ، قطاروں کو لاگو کرنے اور کام کرنے کے لیے کئی میکانزم فراہم کرتا ہے۔ اگرچہ سبھی قطار کے انتظام کے بنیادی مقصد کو پورا کرتے ہیں، وہ اپنی باریکیوں، فوائد اور ممکنہ نقصانات کے ساتھ آتے ہیں۔ آئیے ہر نقطہ نظر کو الگ کرتے ہیں، اس کے میکانکس اور بہترین استعمال کے معاملات کی وضاحت کرتے ہیں۔

نوٹ: آپریشن کرنے سے پہلے ہمیشہ اپنی قطار کی حالت چیک کریں۔ مثال کے طور پر، dequeuing سے پہلے، تصدیق کریں کہ آیا غلطیوں سے بچنے کے لیے قطار خالی ہے۔ اسی طرح، پابند قطاروں کے لیے، یقینی بنائیں کہ قطار لگانے سے پہلے جگہ موجود ہے۔

قطاروں کو لاگو کرنے کے لئے ازگر کی فہرستوں کا استعمال

قطاروں کو لاگو کرنے کے لیے Python کی بلٹ ان فہرستوں کا استعمال بدیہی اور سیدھا ہے۔ بیرونی لائبریریوں یا پیچیدہ ڈیٹا ڈھانچے کی ضرورت نہیں ہے۔ تاہم، یہ نقطہ نظر بڑے ڈیٹاسیٹس کے لیے کارآمد نہیں ہو سکتا۔ فہرست کے آغاز سے کسی عنصر کو ہٹانا (pop(0)) لکیری وقت لیتا ہے، جو کارکردگی کے مسائل کا سبب بن سکتا ہے۔

نوٹ: اعلی کارکردگی کا مطالبہ کرنے والی ایپلیکیشنز کے لیے یا اعداد و شمار کے قابل قدر حجم سے نمٹنے کے لیے، پر سوئچ کریں۔ collections.deque مسلسل وقت کی پیچیدگی کے لیے enqueuing اور dequeuing دونوں کے لیے۔

آئیے اپنی قطار کی نمائندگی کرنے کے لیے ایک فہرست بنا کر شروع کریں:

queue = []

قطار کے آخر میں عناصر کو شامل کرنے کا عمل (انقطاع) فہرست میں شامل کرنے کے علاوہ کچھ نہیں ہے:


queue.append('A')
queue.append('B')
queue.append('C')
print(queue) 

نیز، قطار کے سامنے سے عنصر کو ہٹانا (dequeuing) فہرست کے پہلے عنصر کو ہٹانے کے مترادف ہے:


queue.pop(0)
print(queue) 

کا استعمال کرتے ہوئے collections.deque قطاروں کو لاگو کرنے کے لئے

یہ نقطہ نظر انتہائی موثر ہے جیسا کہ deque a کا استعمال کرتے ہوئے لاگو کیا جاتا ہے۔ دوہری منسلک فہرست. یہ دونوں سروں سے تیز O(1) کے ضمیمہ اور پاپ کو سپورٹ کرتا ہے۔ اس نقطہ نظر کا منفی پہلو یہ ہے کہ یہ ہے۔ تھوڑا سا beginners کے لئے کم بدیہی.

سب سے پہلے، ہم درآمد کریں گے deque سے اعتراض collections ماڈیول بنائیں اور ہماری قطار شروع کریں:

from collections import deque queue = deque()

اب، ہم استعمال کر سکتے ہیں append() عناصر کو قطار میں لگانے کا طریقہ اور popleft() قطار سے عناصر کو ترتیب دینے کا طریقہ:

بہترین طرز عمل، صنعت کے لیے منظور شدہ معیارات، اور چیٹ شیٹ کے ساتھ Git سیکھنے کے لیے ہمارے ہینڈ آن، عملی گائیڈ کو دیکھیں۔ گوگلنگ گٹ کمانڈز کو روکیں اور اصل میں سیکھ یہ!


queue.append('A')
queue.append('B')
queue.append('C')
print(queue) queue.popleft()
print(queue) 

ازگر کا استعمال قطار قطاروں کو لاگو کرنے کا ماڈیول

۔ queue Python کی معیاری لائبریری میں ماڈیول قطار کے انتظام کے لیے ایک زیادہ خصوصی نقطہ نظر فراہم کرتا ہے، مختلف استعمال کے معاملات کو پورا کرتا ہے:

  • سادہ قطار - ایک بنیادی FIFO قطار
  • لائفو کیو - ایک LIFO قطار، بنیادی طور پر ایک اسٹیک
  • ترجیح کیوئ - عناصر کو ان کی تفویض کردہ ترجیح کی بنیاد پر ترتیب دیا گیا ہے۔

نوٹ: کا انتخاب کریں۔ queue ماڈیول، جو بننے کے لیے ڈیزائن کیا گیا ہے۔ دھاگے سے محفوظ. یہ اس بات کو یقینی بناتا ہے کہ قطار میں ہم آہنگی کی کارروائیوں سے غیر متوقع نتائج برآمد نہیں ہوتے ہیں۔

یہ نقطہ نظر بہت اچھا ہے کیونکہ یہ واضح طور پر قطار کی کارروائیوں کے لیے ڈیزائن کیا گیا ہے۔ لیکن، مکمل طور پر ایماندار ہونے کے لئے، یہ سادہ منظرناموں کے لئے ایک حد سے زیادہ نقصان ہوسکتا ہے۔

اب، کا استعمال شروع کرتے ہیں queue ماڈیول کو ہمارے پروجیکٹ میں درآمد کرکے:

import queue

چونکہ ہم ایک سادہ FIFO قطار کو لاگو کر رہے ہیں، ہم اسے استعمال کرکے شروع کریں گے۔ SimpleQueue() تعمیر کنندہ:

q = queue.SimpleQueue()

Enqueue اور dequeue آپریشنز کا استعمال کرتے ہوئے لاگو کیا جاتا ہے put() اور get() سے طریقے queue ماڈیول:


q.put('A')
q.put('B')
q.put('C')
print(q.queue) q.get()
print(q.queue) 

نوٹ: قطار کے آپریشنز مستثنیات کو بڑھا سکتے ہیں، اگر اسے سنبھالا نہ دیا جائے تو، آپ کی درخواست کے بہاؤ میں خلل پڑ سکتا ہے۔ اسے روکنے کے لیے، اپنی قطار کی کارروائیوں کو لپیٹ دیں۔ try-except بلاکس

مثال کے طور پر، کو ہینڈل کریں۔ queue.Empty کے ساتھ کام کرتے وقت استثناء queue ماڈیول:

import queue q = queue.SimpleQueue() try: item = q.get_nowait()
except queue.Empty: print("Queue is empty!")

کون سا نفاذ منتخب کرنا ہے؟

Python میں قطار کے نفاذ کا آپ کا انتخاب آپ کی درخواست کی ضروریات کے مطابق ہونا چاہیے۔ اگر آپ ڈیٹا کی ایک بڑی مقدار کو سنبھال رہے ہیں یا آپ کو بہتر کارکردگی کی ضرورت ہے، collections.deque ایک زبردست انتخاب ہے. تاہم، ملٹی تھریڈڈ ایپلی کیشنز کے لیے یا جب ترجیحات کام میں آتی ہیں، queue ماڈیول مضبوط حل پیش کرتا ہے۔ فوری اسکرپٹس کے لیے یا جب آپ ابھی شروع کر رہے ہوں، ازگر کی فہرستیں کافی ہو سکتی ہیں، لیکن کارکردگی کے ممکنہ نقصانات سے ہمیشہ محتاط رہیں۔

نوٹ: جب پائتھون پہلے سے ہی طاقتور بلٹ ان حل فراہم کرتا ہے تو اپنی مرضی کے مطابق قطار کی کارروائیوں کے ذریعے پہیے کو دوبارہ ایجاد کرنا۔
حسب ضرورت حل تیار کرنے سے پہلے، ازگر کی ان بلٹ پیشکشوں سے اپنے آپ کو واقف کرو جیسے deque اور queue ماڈیول زیادہ تر اکثر، وہ ضروریات کی ایک وسیع رینج کو پورا کرتے ہیں، وقت کی بچت کرتے ہیں اور ممکنہ غلطیوں کو کم کرتے ہیں۔

مزید گہرا غوطہ: ازگر میں قطار کے جدید تصورات

ان لوگوں کے لیے جنہوں نے قطاروں کے بنیادی میکانکس کو سمجھ لیا ہے اور وہ گہرائی میں جانے کے خواہشمند ہیں، Python قطار پر مبنی کارروائیوں کو بہتر اور بہتر بنانے کے لیے جدید تصورات اور تکنیکوں کی بہتات پیش کرتا ہے۔ آئیے ان میں سے کچھ نفیس پہلوؤں سے پردہ اٹھاتے ہیں، جو آپ کو مزید پیچیدہ منظرناموں سے نمٹنے کے لیے آلات کا ایک ہتھیار فراہم کرتے ہیں۔

کے ساتھ دوہری ختم ہونے والی قطاریں۔ قابل

جبکہ ہم نے پہلے دریافت کیا ہے۔ deque FIFO قطار کے طور پر، یہ LIFO (Last-In-First-Out) آپریشنز کو بھی سپورٹ کرتا ہے۔ یہ آپ کو O(1) پیچیدگی کے ساتھ دونوں سروں سے عناصر کو جوڑنے یا پاپ کرنے کی اجازت دیتا ہے:

from collections import deque dq = deque()
dq.appendleft('A') dq.append('B') dq.pop() dq.popleft() 

ترجیحی قطار ایکشن میں

جب پروسیسنگ کی ترتیب ترجیح پر منحصر ہو تو سادہ FIFO قطار کا استعمال ناکارہ پن یا ناپسندیدہ نتائج کا باعث بن سکتا ہے، لہذا، اگر آپ کی درخواست کے لیے ضروری ہے کہ کچھ عناصر کو کچھ معیاروں کی بنیاد پر دوسروں سے پہلے پروسیس کیا جائے، PriorityQueue. یہ یقینی بناتا ہے کہ عناصر پر ان کی مقرر کردہ ترجیحات کی بنیاد پر کارروائی کی جاتی ہے۔

اس پر ایک نظر ڈالیں کہ ہم ان عناصر کے لیے ترجیحات کیسے طے کرتے ہیں جنہیں ہم قطار میں شامل کر رہے ہیں۔ اس کا تقاضا ہے کہ ہم دلیل کے طور پر ایک ٹیپل پاس کریں۔ put() طریقہ ٹیوپل میں اپنے پہلے عنصر کے طور پر ترجیح اور دوسرے عنصر کے طور پر اصل قدر ہونی چاہیے:

import queue pq = queue.PriorityQueue()
pq.put((2, "Task B"))
pq.put((1, "Task A")) pq.put((3, "Task C")) while not pq.empty(): _, task = pq.get() print(f"Processing: {task}")

یہ ہمیں مندرجہ ذیل دے گا:

Processing: Task A
Processing: Task B
Processing: Task C

نوٹ کریں کہ ہم نے قطار میں ذخیرہ شدہ چیزوں سے مختلف ترتیب میں عناصر کو کیسے شامل کیا۔ یہ ان ترجیحات کی وجہ سے ہے جو ہم نے میں تفویض کی ہیں۔ put() ترجیحی قطار میں عناصر کو شامل کرتے وقت طریقہ۔

سرکلر قطار کو نافذ کرنا

ایک سرکلر قطار (یا رنگ بفر) ایک اعلی درجے کا ڈیٹا ڈھانچہ ہے جہاں آخری عنصر پہلے سے منسلک ہوتا ہے، ایک سرکلر بہاؤ کو یقینی بناتا ہے۔ deque اس کا استعمال کرتے ہوئے اس رویے کی نقل کر سکتے ہیں۔ maxlen جائیداد:

from collections import deque circular_queue = deque(maxlen=3)
circular_queue.append(1)
circular_queue.append(2)
circular_queue.append(3) circular_queue.append(4)
print(circular_queue) 

نتیجہ

قطاریں، جو بنیادی لیکن طاقتور ہیں، اپنے جوہر کو حقیقی دنیا کی مختلف ایپلی کیشنز اور کمپیوٹیشنل مسائل میں تلاش کرتی ہیں۔ آپریٹنگ سسٹم میں ٹاسک شیڈولنگ سے لے کر پرنٹ سپولرز یا ویب سرور کی درخواستوں میں ڈیٹا کے بہاؤ کو منظم کرنے تک، قطاروں کے مضمرات دور رس ہیں۔

Python میز پر قطاروں کے ساتھ کام کرنے کے لیے ٹولز اور لائبریریوں کا ایک بھرپور پیلیٹ لاتا ہے۔ فوری اسکرپٹس کے لیے سادہ فہرست پر مبنی قطاروں سے لے کر انتہائی موثر تک deque کارکردگی کے لحاظ سے اہم ایپلی کیشنز کے لیے، زبان درحقیقت ضرورتوں کے اسپیکٹرم کو پورا کرتی ہے۔

ٹائم اسٹیمپ:

سے زیادہ Stackabuse