الانتقال إلى المحتوى الرئيسي

كيفية إنشاء قائمة انتظار في بيثون: دليل مع أمثلة

قائمة الانتظار هي واحدة من هياكل البيانات الأكثر شيوعا التي يتم استخدامها لتخزين وإدارة العناصر بترتيب وصولها. قائمة الانتظار تعمل على مبدأ" أولا في ، أولا خارج " (فيفو — أولا-في ، أولا-خارج). في لغة برمجة بايثون ، يمكن إنشاء قائمة انتظار واستخدامها باستخدام وحدة المجموعات.

توفر وحدة المجموعات مجموعة من هياكل البيانات عالية المستوى التي توفر بديلا لهياكل بايثون المدمجة. أحد هذه الهياكل هو ديك ، وهو طابور ثنائي الاتجاه. تسمح لك قائمة الانتظار ثنائية الاتجاه بإضافة عناصر وإزالتها من جانبي قائمة الانتظار. هذا يجعل الديك أكثر مرونة وسهولة في الاستخدام مقارنة بالقائمة العادية.

في هذا المثال ، نقوم باستيراد فئة ديك من وحدة المجموعات وإنشاء قائمة انتظار فارغة باستخدام وظيفة ديك (). ثم نضيف عدة عناصر إلى قائمة الانتظار باستخدام طريقة إلحاق (). يتم استخدام طريقة بوبليفت () لإزالة العناصر من بداية قائمة الانتظار.

باستخدام ديك لإنشاء قائمة انتظار في بيثون يسمح لك لإدارة العناصر بكفاءة وأداء إضافة وإزالة العمليات في بداية ونهاية قائمة الانتظار مع تعقيد الوقت المستمر ، مما يجعلها خيارا مثاليا لحل مجموعة متنوعة من المهام ذات الصلة قائمة الانتظار.

  1. ما هو طابور في بيثون?
  2. الخطوة 1: استيراد المكتبات اللازمة
  3. باستخدام وحدة قائمة الانتظار
  4. الخطوة 2: إنشاء قائمة انتظار
  5. الطريقة 1: استخدام الأساليب المدمجة
  6. الطريقة 2: استخدام القائمة
  7. الطريقة 3: استخدام مكتبة المجموعات
  8. طرق لإنشاء قائمة انتظار
  9. 1. باستخدام القائمة
  10. 2. باستخدام وحدة المجموعات
  11. 3. باستخدام وحدة قائمة الانتظار
  12. 4. باستخدام وحدة أسينسيو
  13. الخطوة 3: إضافة عناصر
  14. إضافة عناصر إلى قائمة الانتظار
  15. الخطوة 4: حذف العناصر
  16. إزالة العناصر من قائمة الانتظار
  17. سؤال وجواب

ما هو طابور في بيثون?

في البرمجة ، قائمة الانتظار هي بنية بيانات تعمل على أساس أسبقية الحضور. تطلب قائمة الانتظار العناصر بالترتيب الذي تمت إضافتها به ، وتوفر عمليات لإضافة عناصر إلى نهاية قائمة الانتظار وإزالة العناصر من بداية قائمة الانتظار.

في بايثون ، يتم تمثيل قائمة الانتظار بواسطة وحدة قائمة الانتظار المدمجة. تقدم وحدة قائمة الانتظار عدة فئات للعمل مع قوائم الانتظار ، بما في ذلك فئات قائمة الانتظار وقائمة الانتظار والأولوية. تقوم فئة قائمة الانتظار بتنفيذ قائمة انتظار عادية حيث تتم إضافة العناصر إلى نهاية قائمة الانتظار واسترجاعها من بداية قائمة الانتظار. تقوم فئة ليفكويو بتنفيذ بنية بيانات" مكدس " ، حيث يكون العنصر الإضافي الأخير هو أول عنصر يتم حذفه. تنفذ فئة بريوريتيكو قائمة انتظار ذات أولوية حيث يتم استرداد العناصر وفقا لأولوية معينة.

تستخدم قوائم الانتظار على نطاق واسع لمهام مختلفة مثل إدارة المهام والجدولة ومعالجة الأحداث والتواصل بين سلاسل الرسائل والمزيد. إنها تسمح لك بإدارة تدفقات البيانات بشكل فعال ، وضمان ترتيب العمليات وتوفير آليات القفل والمزامنة.

أمثلة على استخدام قوائم الانتظار في بايثون:

  • طابور العملاء في المتجر
  • تجهيز دفعة من البيانات
  • التنفيذ الموازي للمهام
  • معالجة طلبات الشبكة
  • تنفيذ نموذج البرمجة القائم على الحدث

في بايثون ، يمكن تنفيذ قوائم الانتظار باستخدام القوائم واستخدام الفئات المتخصصة من وحدة قائمة الانتظار. تقدم فئات قائمة الانتظار المختلفة طرقا مختلفة لإدارة البيانات وهي مناسبة لحالات الاستخدام المختلفة.

فئةالوصف
قائمة الانتظارقائمة انتظار مع قفل ، ويدعم آليات القفل والمزامنة
ليفوكيوقائمة انتظار مع قفل في وضع "المكدس" ، تدعم آليات القفل والمزامنة
الأولويةطابورقائمة انتظار مع قفل ، ويدعم آليات القفل والمزامنة ، يتم استرداد العناصر وفقا لأولوية معينة

يؤدي استخدام قوائم الانتظار إلى تبسيط إدارة البيانات وزيادة كفاءة البرنامج. توفر قوائم الانتظار آلية موثوقة ومريحة لتنظيم تدفقات البيانات ، مما يجعلها أدوات مفيدة في مهام البرمجة المختلفة.

الخطوة 1: استيراد المكتبات اللازمة

قبل أن نبدأ في إنشاء قائمة انتظار في بايثون ، سنحتاج إلى استيراد العديد من المكتبات المهمة. في هذا القسم ، سننظر في كيفية استيراد مكتبات قائمة الانتظار والمجموعات.

توفر مكتبة قائمة الانتظار فئات تسمح لك بالعمل بكفاءة مع قائمة انتظار. الفئة الرئيسية التي سنستخدمها هي فئة قائمة الانتظار. يوفر مجموعة من الطرق لإضافة العناصر وإزالتها واسترجاعها من قائمة الانتظار.

توفر مكتبة المجموعات فئة ديكي (قائمة انتظار مزدوجة العضوية) ، وهو تنفيذ قائمة انتظار سريعة وفعالة. يوفر فئة ديك مجموعة كبيرة من الأساليب للعمل مع قائمة انتظار ، بما في ذلك إضافة وحذف واسترجاع العناصر من كل نهاية قائمة الانتظار.

في المثال التالي ، سنوضح كيفية استيراد هذه المكتبات:

  1. استيراد مكتبة قائمة الانتظار:
  2. قائمة انتظار الاستيراد

  3. استيراد فئة قائمة الانتظار:
  4. من قائمة انتظار استيراد قائمة الانتظار

  5. استيراد مكتبة المجموعات:
  6. مجموعات الاستيراد

  7. استيراد فئة ديك:
  8. من مجموعات استيراد ديكي

باستخدام وحدة قائمة الانتظار

في بيثون ، هناك وحدة قائمة انتظار توفر فئات للعمل مع قائمة انتظار. تقوم وحدة قائمة الانتظار بتنفيذ هذا كفئة قائمة انتظار. توفر هذه الفئة طريقة ملائمة لإنشاء العناصر وإضافتها وحذفها من قائمة الانتظار.

لاستخدام وحدة قائمة الانتظار ، يجب عليك أولا استيرادها باستخدام الأمر:

قائمة انتظار الاستيراد

بعد استيراد وحدة قائمة الانتظار ، يمكنك إنشاء مثيل لفئة قائمة الانتظار. للقيام بذلك ، استخدم الأمر التالي:

س = قائمة الانتظار.قائمة الانتظار()

عند إنشاء مثيل لفئة قائمة الانتظار ، يمكنك تحديد الحد الأقصى لطول قائمة الانتظار باستخدام وسيطة الحجم الأقصى. إذا لم تحدد وسيطة الحجم الأقصى ، فسيكون لقائمة الانتظار حجم غير محدود.

بعد إنشاء قائمة انتظار،يمكنك إضافة عناصر إليها باستخدام طريقة وضع. على سبيل المثال:

س. ضع (10)

س. ضع (20)

س. ضع (30)

لإزالة العناصر من قائمة الانتظار ، يمكنك استخدام طريقة الحصول عليها. على سبيل المثال ، إذا أردنا إزالة العنصر الأول من قائمة الانتظار ، فيمكننا استخدام الأمر التالي:

عنصر = ف. الحصول على()

لا تقوم طريقة جيت بإزالة العنصر من قائمة الانتظار فحسب ، بل تقوم أيضا بإرجاع قيمته. إذا كانت قائمة الانتظار فارغة ، يتم حظر طريقة جيت وينتظر ظهور العناصر في قائمة الانتظار.

بالإضافة إلى طرق بوت و جيت ، توفر فئة قائمة الانتظار أيضا طرقا مفيدة أخرى ، بما في ذلك فارغة (التحقق مما إذا كانت قائمة الانتظار فارغة) ، والكامل (التحقق مما إذا كانت قائمة الانتظار ممتلئة) ، وكسيزي (إرجاع حجم قائمة الانتظار) ، والمهمة (تستخدم بالاقتران مع طريقة الانضمام للإشارة إلى اكتمال المهمة) وغيرها.

توفر وحدة قائمة الانتظار أيضا فئات أخرى للعمل مع قائمة الانتظار ، مثل ليفكويو (اسم آخر هو كومة) و بريوريتيكو (قائمة انتظار الأولوية) ، والتي تعمل على نحو مماثل لفئة قائمة الانتظار ، ولكن لديها بعض الاختلافات في السلوك.

هنا مثال على استخدام وحدة قائمة الانتظار:

قائمة انتظار الاستيراد

س = قائمة الانتظار.قائمة الانتظار()

س. ضع (10)

س. ضع (20)

س. ضع (30)

طباعة (ف. الحصول على ()) # 10

طباعة (ف. الحصول على ()) # 20

طباعة (س.احصل على ()) # 30

يوضح هذا المثال كيفية إنشاء قائمة انتظار باستخدام فئة قائمة الانتظار ، وإضافة عدة عناصر إليها ، ثم حذفها واحدة تلو الأخرى باستخدام طريقة جيت.

الخطوة 2: إنشاء قائمة انتظار

بمجرد أن تفهم ما هي قائمة الانتظار وكيف تعمل ، يمكنك البدء في إنشاء قائمة انتظار في بايثون. هناك عدة طرق لإنشاء قائمة انتظار في بايثون.

الطريقة 1: استخدام الأساليب المدمجة

واحدة من أسهل الطرق لإنشاء قائمة انتظار في بايثون هي استخدام الأساليب المضمنة. للقيام بذلك ، سوف تحتاج إلى استيراد وحدة قائمة الانتظار.

قائمة انتظار الاستيراد

# إنشاء قائمة انتظار فارغة

س = قائمة الانتظار.قائمة الانتظار()

# إضافة عناصر إلى قائمة الانتظار

س. ضع (1)

س. ضع (2)

س. ضع (3)

# إخراج عناصر قائمة الانتظار

بينما لا ف.فارغ():

طباعة (ف. الحصول على())

في هذا المثال ، نقوم باستيراد وحدة قائمة الانتظار ، وإنشاء قائمة انتظار فارغة باستخدام طريقة قائمة الانتظار () ، وإضافة عناصر إلى قائمة الانتظار باستخدام طريقة وضع (). ثم نقوم بإخراج عناصر قائمة الانتظار باستخدام حلقة بينما وطريقة الحصول على ().

الطريقة 2: استخدام قائمة

الطريقة الثانية لإنشاء قائمة انتظار في بايثون هي استخدام قائمة. للقيام بذلك ، سوف تحتاج إلى إعلان قائمة فارغة واستخدام أساليب إلحاق() والبوب(0).

# إنشاء قائمة انتظار فارغة

س = []

# إضافة عناصر إلى

ال ف. إلحاق قائمة الانتظار (1)

ف. إلحاق(2)

ف. إلحاق (3)

# عناصر قائمة انتظار الإخراج

بينما س:

طباعة (ف. البوب(0))

في هذا المثال ، نقوم بإنشاء قائمة فارغة ، وإضافة عناصر إلى قائمة الانتظار باستخدام طريقة إلحاق () ، وعناصر قائمة انتظار الإخراج باستخدام حلقة بينما وطريقة البوب (0).

الطريقة 3: استخدام مكتبة المجموعات

الطريقة الثالثة لإنشاء قائمة انتظار في بايثون هي استخدام مكتبة المجموعات. للقيام بذلك ، سوف تحتاج إلى استيراد فئة ديك من وحدة المجموعات.

من مجموعات استيراد ديكي

# إنشاء قائمة انتظار فارغة

س = ديك()

# إضافة عناصر إلى قائمة الانتظار

ف. إلحاق (1)

ف. إلحاق(2)

ف. إلحاق (3)

# عناصر قائمة انتظار الإخراج

بينما س:

طباعة (س. بوبليفت())

في هذا المثال ، نقوم باستيراد فئة ديك من وحدة المجموعات ، وإنشاء قائمة انتظار فارغة باستخدام فئة ديك () ، وإضافة عناصر إلى قائمة الانتظار باستخدام طريقة إلحاق (). ثم نقوم بإخراج عناصر قائمة الانتظار باستخدام حلقة بينما وطريقة بوبليفت ().

كل هذه الطرق متكافئة ويمكنك اختيار أي منها اعتمادا على تفضيلات وميزات مشروعك.

طرق لإنشاء قائمة انتظار

في بايثون ، هناك عدة طرق لإنشاء قائمة انتظار ، اعتمادا على الوظائف والخصائص المطلوبة لقائمة الانتظار. دعونا ننظر إلى بعض منهم:

1. باستخدام القائمة

إن أبسط طريقة لإنشاء قائمة انتظار في بايثون هي استخدام قائمة قياسية. ستكون قائمة الانتظار قائمة بالعناصر التي يكون فيها العنصر الأول في قائمة الانتظار هو العنصر الذي يحتوي على الفهرس 0 ، والأخير الذي يحتوي على أعلى فهرس.

قائمة الانتظار = []

طابور.إلحاق (1) # إضافة عنصر إلى نهاية قائمة الانتظار

طابور.إلحاق(2)

طابور.إلحاق (3)

العنصر الأول = قائمة الانتظار.البوب (0) # استرداد العنصر الأول من قائمة الانتظار

2. باستخدام وحدة المجموعات

وحدة مجموعات في بيثون يوفر فئة ديك ، وهو طابور في اتجاهين. لديها تنفيذ أكثر كفاءة مقارنة بالقائمة ، خاصة في حالة إضافة العناصر وحذفها بشكل متكرر.

من مجموعات استيراد ديكي

قائمة الانتظار = ديك()

طابور.إلحاق (1)

طابور.إلحاق(2)

طابور.إلحاق (3)

العنصر الأول = قائمة الانتظار.بوبليفت () # استرداد العنصر الأول من قائمة الانتظار

3. باستخدام وحدة قائمة الانتظار

وحدة قائمة الانتظار في بيثون يوفر قائمة الانتظار ، ليفكو و بريوريتيكو فئات التي تنفذ أنواع مختلفة من قوائم الانتظار. فئة قائمة الانتظار هي قائمة انتظار عادية فيفو (أولا في أول).

من قائمة انتظار استيراد قائمة الانتظار

قائمة الانتظار = قائمة الانتظار()

طابور.وضع (1)

طابور.وضع (2)

طابور.وضع (3)

العنصر الأول = قائمة الانتظار.احصل على () # استرداد العنصر الأول من قائمة الانتظار

4. باستخدام وحدة أسينسيو

توفر الوحدة غير المتزامنة في بايثون وظائف للبرمجة غير المتزامنة. أنه يحتوي على فئة أسينسيو.قائمة انتظار التي تنفذ قائمة انتظار فيفو غير متزامن. يمكن استخدامه لتنظيم التفاعل بين المهام غير المتزامنة.

استيراد أسينسيو

async def producer(queue):

await queue.put(1)

await queue.put(2)

await queue.put(3)

async def consumer(queue):

first_element = await queue.get()

async def main():

queue = asyncio.Queue()

await asyncio.gather(producer(queue), consumer(queue))

asyncio.run(main())

Это лишь некоторые из способов создания очереди в Python. Выбор конкретного способа зависит от требований и условий задачи, а также от возможностей и предпочтений разработчика.

Шаг 3: إضافة عناصر

بعد إنشاء قائمة انتظار ، يمكنك البدء في إضافة عناصر إليها. هناك طرق مختلفة لإضافة عناصر إلى قائمة انتظار في بايثون ، ولكن الأكثر شيوعا هو استخدام طريقة بوت ().

طريقة وضع () يسمح لك لإضافة عنصر إلى نهاية قائمة الانتظار. فإنه يأخذ قيمة عنصر كوسيطة ويضيف إلى قائمة الانتظار.

يوجد أدناه مثال على رمز يوضح إضافة عناصر إلى قائمة انتظار:

من قائمة انتظار استيراد قائمة الانتظار

# إنشاء قائمة انتظار

قائمة الانتظار = قائمة الانتظار()

# إضافة عناصر إلى قائمة الانتظار

طابور.وضع (1)

طابور.وضع (2)

طابور.وضع (3)

في هذا المثال ، نقوم بإنشاء قائمة انتظار باستخدام وظيفة قائمة الانتظار () من وحدة قائمة الانتظار. ثم استخدمنا طريقة وضع () لإضافة عناصر إلى قائمة الانتظار. يتم تمرير قيمة كل عنصر كوسيطة لطريقة وضع ().

يمكنك أيضا إضافة عناصر إلى قائمة الانتظار داخل الحلقة أو قراءة العناصر من لوحة المفاتيح وإضافتها إلى قائمة الانتظار. ذلك يعتمد على البرنامج والمتطلبات الخاصة بك.

إضافة عناصر إلى قائمة الانتظار

قائمة الانتظار في بايثون هي بنية بيانات يتم فيها إضافة العناصر واسترجاعها بالترتيب المقابل لمبدأ" أولا في— أولا خارج " (فيفو — أولا في ، أولا خارج). تتم إضافة العناصر إلى قائمة الانتظار باستخدام طريقة وضع ().

لإنشاء قائمة انتظار في بايثون ، يتم استخدام فئة قائمة الانتظار من وحدة قائمة الانتظار. يوجد أدناه مثال على إنشاء قائمة انتظار وإضافة عناصر:

من قائمة انتظار استيراد قائمة الانتظار

# إنشاء قائمة انتظار فارغة

قائمة الانتظار = قائمة الانتظار()

# إضافة عناصر إلى قائمة الانتظار

طابور.وضع (1)

طابور.وضع (2)

طابور.وضع (3)

في هذا المثال ، نقوم بإنشاء قائمة انتظار فارغة باستخدام منشئ فئة قائمة الانتظار (). ثم نستخدم طريقة وضع () لإضافة عناصر إلى قائمة الانتظار. ستتم إضافة القيم التي تم تمريرها 1 و 2 و 3 إلى قائمة الانتظار بالترتيب المحدد.

تضع طريقة وضع () عنصرا في نهاية قائمة الانتظار. إذا امتلأت قائمة الانتظار أثناء عملية إضافة العناصر ، فسيزداد حجمها تلقائيا.

للتأكد من إضافة العناصر فعليا إلى قائمة الانتظار ، يمكنك استخدام طريقة قائمة الانتظار.كسيزي () ، الذي يعود عدد العناصر في قائمة الانتظار:

طباعة (قائمة انتظار.حجم ()) # الإخراج : 3

تقوم طريقة كسيزي () بإرجاع القيمة 3 ، مما يشير إلى وجود ثلاثة عناصر في قائمة الانتظار. هذا يؤكد الإضافة الناجحة للعناصر إلى قائمة الانتظار.

يمكن أن تكون إضافة عناصر إلى قائمة الانتظار مفيدة عند معالجة المهام وتشغيل العمليات بترتيب وصولها. استخدم طريقة وضع () لإدراج عنصر في نهاية قائمة الانتظار.

الخطوة 4: حذف العناصر

عند العمل مع قائمة انتظار ، قد يكون من الضروري إزالة عنصر معين من قائمة الانتظار. يوفر بايثون عدة طرق لإزالة العناصر من قائمة الانتظار:

    قائمة الانتظار = [1, 2, 3, 4, 5]

طابور.إزالة (3)

طباعة (و " قائمة الانتظار بعد حذف عنصر: {قائمة الانتظار}")

يعتمد اختيار طريقة إزالة العناصر من قائمة الانتظار على المهمة المحددة ومتطلبات العمل مع البيانات.

إزالة العناصر من قائمة الانتظار

قائمة الانتظار هي بنية بيانات حيث تتم إضافة العناصر إلى نهاية قائمة الانتظار وإزالتها من بداية قائمة الانتظار. في بايثون ، يمكن تنفيذ قائمة انتظار باستخدام وحدة المجموعات.

يستخدم بيثون طريقة بوبليفت () لإزالة العناصر من قائمة الانتظار. تقوم هذه الطريقة بإزالة وإرجاع العنصر الأول من قائمة الانتظار ، وتحويل جميع العناصر الأخرى إلى اليسار.

نموذج التعليمات البرمجية:

من مجموعات استيراد ديكي

قائمة الانتظار = ديك()

طابور.إلحاق (1)

طابور.إلحاق(2)

طابور.إلحاق (3)

طباعة (قائمة انتظار.بوبليفت ()) # المخرجات 1 ، منذ 1 كان العنصر الأول في

الطباعة (قائمة الانتظار.بوبليفت ()) # المخرجات 2 ، منذ 2 أصبح العنصر الأول بعد حذف 1

طباعة (قائمة انتظار.بوبليفت ()) # المخرجات 3 ، منذ 3 أصبح العنصر الأول بعد حذف 2

الناتج: